ホームページ > ウェブフロントエンド > フロントエンドQ&A > es6 にはアンパサンドはありますか?

es6 にはアンパサンドはありますか?

青灯夜游
リリース: 2022-11-01 19:24:25
オリジナル
1318 人が閲覧しました

にはアンパサンドが付いています。 es6 では、「&&」は論理 AND 演算子であり、AND ブール演算です。構文は「オペランド 1 && オペランド 2」です。両方のオペランドが true の場合のみ true を返し、それ以外の場合は false を返します。論理 AND は短絡論理の一種で、左側の式が false の場合、結果が直接短絡されて返され、右側の式は評価されなくなります。

es6 にはアンパサンドはありますか?

このチュートリアルの動作環境: Windows 7 システム、ECMAScript バージョン 6、Dell G3 コンピューター。

es6 には & 記号があり、「&&」は論理 AND 演算子です。

論理 AND 演算&&

論理 AND 演算 (&&) は、AND ブール演算です。両方のオペランドが true の場合にのみ true を返し、それ以外の場合は false を返します。詳細な説明を表に示します。

#論理 AND 演算最初のオペランド2 番目のオペランド演算結果truetruetruetruefalsefalse#false##truefalse##falsefalse
##false
論理 AND は短絡論理の一種で、左側の式が false の場合、結果は短絡されて直接返され、上の式は権利は評価されなくなります。演算ロジックは次のとおりです。
ステップ 1: 最初のオペランド (左側の式) の値を計算します。

  • ステップ 2: 最初のオペランドの値を検出します。左側の式の値が false (null、unknown、NaN、0、""、false など) に変換可能な場合、操作は終了し、最初のオペランドの値が直接返されます。

  • ステップ 3: 最初のオペランドを true に変換できる場合は、2 番目のオペランド (右側の式) を評価します。

  • ステップ 4: 2 番目のオペランドの値を返します。

  • 例 1

次のコードでは、論理 AND 演算を使用して変数を検出し、初期化します。

var user;  //定义变量
(! user && console.log("没有赋值"));  //返回提示信息“没有赋值”
ログイン後にコピー
以下と同等:
var user;  //定义变量
if (! user){  //条件判断
    console.log("变量没有赋值");
}
ログイン後にコピー

変数 user の値が 0 の場合、または空の文字列などの false 値がブール値に変換された場合は、false になります。値が割り当てられている場合でも、プロンプトが表示されます。変数には値が割り当てられていません。したがって、設計時には、論理 AND の左側の式の戻り値が予測可能な値であることを確認する必要があります。

var user = 0;  //定义并初始化变量
(! user && console.log("变量没有赋值"));  //返回提示信息“变量没有赋值”
ログイン後にコピー

左側の式が false の場合、右側の式は直接スキップされるため、右側の式には代入、インクリメント、デクリメント、関数呼び出しなどの有効な演算を含めることはできません。後続の操作に影響を及ぼし、潜在的な影響をもたらします。

例 2

論理 AND 演算子を使用すると、複数の分岐構造の設計を置き換えることができます。

var n = 3;
(n == 1) && console.log(1);
(n == 2) && console.log(2);
(n == 3) && console.log(3);
( ! n ) && console.log("null");
ログイン後にコピー
上記のコードは、次の複数分岐構造と同等です。
var n = 3;
switch(n){
    case1:
        console.log(1);
        break;
    case2:
        console.log(2);
        break;
    case3:
        console.log(3);
        break;
    default:
        console.log("null");
ログイン後にコピー

論理 AND 演算のオペランドには任意のタイプの値を指定でき、オペランドをブール値に変換して返すのではなく、元の式の値を返します。

1) オブジェクトがブール値に変換される場合は True。たとえば、空のオブジェクトはブール値と論理的に AND 演算されます。

console.log(typeof ({} && true));  //返回第二个操作数的值  true的类型:布尔型
console.log(typeof (true && {}));  //返回第二个操作数的值  {}的类型:对象
ログイン後にコピー

2) オペランドに null が含まれる場合、戻り値は常に null になります。たとえば、null 型の値を持つ文字列「null」の論理 AND 演算は、位置に関係なく常に null を返します。

console.log(typeof ("null" && null));  //返回null的类型:对象
console.log(typeof (null && "null"));  //返回null的类型:对象
ログイン後にコピー

3) オペランドに NaN が含まれる場合、戻り値は常に NaN になります。たとえば、文字列「NaN」と NaN 型の値の論理 AND 演算は、位置に関係なく常に NaN を返します。

console.log(typeof ("NaN" && NaN));  //返回NaN的类型:数值
console.log(typeof (NaN && "NaN"));  //返回NaN的类型:数值
ログイン後にコピー

4) Infinity の場合、true に変換され、通常の値と同様に論理 AND 演算に参加します。

console.log(typeof ("Infinity" && Infinity));  //返回第二个操作数Infinity的类型:数值
console.log(typeof (Infinity && "Infinity"));  //返回第二个操作数"Infinity"的类型:字符串
ログイン後にコピー

5) オペランドに未定義が含まれる場合は、未定義が返されます。たとえば、文字列「未定義」と型が未定義の値との論理 AND 演算は、位置に関係なく常に未定義を返します。

console.log(typeof ("undefined" && undefined));  //返回undefined
console.log(typeof (undefined && "undefined"));  //返回undefined
ログイン後にコピー

拡張知識: ES6 の && と __ のあまり知られていない操作

誰もが知っているように、es6 では論理演算子 &&および条件を表します。||if/else の代わりに or 条件

let info = {
  name:"long",
  age:null
};

//&&
//info的name与age同时为真,则结果为真
if(info.name && info.age){
  console.log("与条件"); //与条件
}else{
  console.log("失败");
}

//||
//info的name或age,只要有一个为真,则结果为真
if(info.name || info.age){
  console.log("或条件"); //或条件
}else{
  console.log("失败");
}
ログイン後にコピー

を表します。ただし、if/else

let info = {name:"long"};

let name = info && info.name; //long

let isVip = false;
let vipPrice = isVip || 19;//19
ログイン後にコピー
decide() && true();

//如果decide()执行后为true,则执行true(),并输出true()的值;如果decide()执行后为false,则输出decide()执行后的结果,且不执行true()


//预计使用场景,有一个mongo查询条件where,当name存在时,匹配name数据
where= {age:19};
name && where.name = name;
ログイン後にコピー
decide() || false();

//如果decide()执行后为true,则执行decide(),并输出decide()的值,fasle()不执行;如果decide()执行后为false,则执行fasle(),且输出false()的结果
ログイン後にコピー
decide() && true() || fasle();

//如果decide()执行后为true,则执行true(),并输出true()的值;
//如果decide()执行后为false,则执行false(),并输出false()的值
ログイン後にコピー
# を表すことによって簡略化することもできます。 ## [関連する推奨事項: JavaScript ビデオ チュートリアル

Web フロントエンド

]

以上がes6 にはアンパサンドはありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
関連するチュートリアル
人気のおすすめ
最新のコース
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート