ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript 演算子と論理演算子の包括的な理解

JavaScript 演算子と論理演算子の包括的な理解

怪我咯
怪我咯オリジナル
2017-04-01 09:19:061601ブラウズ

前の言葉
論理演算子は、オペランドに対してブール演算を実行し、関係演算子と一緒によく使用されます。論理演算子は、複数の関係式 を結合して、より複雑な式を形成します。論理演算子は、論理 NOT '!'、論理 AND '&&'、論理 OR '||' の 3 種類に分けられます。この記事では、これら 3 つの論理演算子を紹介します
論理 NOT
論理 NOT演算子 は、感嘆符 (!) は、ECMAScript の任意の値に適用できることを意味します。値のデータ型に関係なく、この演算子はブール値を返します。論理 NOT 演算子は、まずオペランドをブール値に変換し、次にそれを否定します。論理 NOT 演算子の
ブール型への変換タイプは、最終的に結果が得られる点を除いて、Boolean() 変換関数と同じです。反転している。そして、2 つの論理 NOT 演算子を同時に使用すると、Boolean() 変換関数の動作を実際にシミュレートします

console.log(!!undefined);//false
console.log(!!null);//false
console.log(!!0);//false
console.log(!!-0);//false
console.log(!!NaN);//false
console.log(!!'');//false
console.log(!!false);//false


console.log(!!{});//true
console.log(!![]);//true

console.log(!!new Boolean(false));//true
console.log(!!false);//false
console.log(!!new Boolean(null));//true
console.log(!!null);//false


論理 NOT 演算子は、ループを制御するためによく使用されます

//Boolean 变量(bFound)用于记录检索是否成功。找到问题中的数据项时,bFound 将被设置为true,!bFound将等于false,意味着运行将跳出while循环
var bFound = false;
var i = 0;
while (!bFound) {
 if (aValue[i] == vSearchValues) {
  bFound = true;
 } else {
  i++;
 }
}

論理 AND

論理 AND 演算子
は 2 つのアンパサンド (&&) で表され、結果は 2 つのオペランドを持ち、両方のオペランドが true の場合にのみ true を返し、それ以外の場合は false を返します

//逻辑与(&&)的真值表
第一个操作数    第二个操作数    结果
true       true        true
true       false       false
false       true        false
false       false       alse

論理 AND 演算は次のように行うことができます。ブール値だけでなく、あらゆるタイプのオペランドに適用されます。オペランドの 1 つがブール値ではない場合、論理 AND 演算は必ずしもブール値を返すとは限りません

論理 AND 演算は、最初のオペランドで結果を決定できる場合、2 番目のオペランドは結果を決定しません。

論理 AND の場合、2 番目のオペランドの値が何であっても、最初のオペランドが false の場合、最初のオペランドが true の場合は最初のオペランドが返されます。が true または false で、2 番目のオペランドが true または false の場合、2 番目のオペランドが返されます。式

//除了false、undefined、null、+0、-0、NaN、''这7个假值,其余都是真值
console.log('t' && ''); //因为't'是真值,所以返回''
console.log('t' && 'f'); //因为't'是真值,所以返回'f'
console.log('t' && 1 + 2); //因为't'是真值,所以返回3
console.log('' && 'f'); //因为''是假值,所以返回''
console.log('' && ''); //因为''是假值,所以返回''

の値は、論理積 (&&) および論理和の優先度よりも高くなります。 (||) なので、括弧を追加せずに同様の式を直接記述することができます


var i = 1;
var result = (true && i++);
console.log(result,i);//因为true是真值,所以执行i++,i是2,result是1

var i = 1;
var result = (false && i++);
console.log(result,i);//因为false是假值,所以不执行i++,i是1,result是false

論理 AND 演算子を使用して if 構造を置き換えることができます


console.log(true && 'foo' && '' && 4 && 'foo' && true);// ''

論理 AND 演算子は、

コールバック関数でよく使用されます
使用中

if(a+1==2 && b+2==3){
  //Todo  
}

論理OR


論理OR演算子

は2本の縦棒(||)で構成されており、オペランドが2つあることを意味し、両方のオペランドがfalseの場合のみ結果はfalseを返し、それ以外の場合はtrueを返します

if (a == b) {
 doSomething();
}
// 等价于
(a == b) && doSomething();

同様に、論理 OR 演算はブール値だけでなく、あらゆるタイプのオペランドにも適用できます。オペランドの 1 つがブール値ではない場合、論理 OR 演算は必ずしもブール値を返すとは限りません

論理 OR 演算は、最初のオペランドで結果を決定できる場合は、2 番目のオペランドも結果を決定します。値 論理和の場合、2 番目のオペランドの値に関係なく、最初のオペランドが true の場合、最初のオペランドが false の場合、最初のオペランドが返されます。結果の true または false が 2 番目のオペランドの true または false と同じ場合、2 番目のオペランドが返されます

//若没有给参数a传值,则a为默认的undefined,是假值,所以不执行a(),防止报错,如果给参数a传值,则执行函数a()
function fn(a){
  if(a){
    a();
  }
}
//等价于
function fn(a){
  a && a();
}

//逻辑或(||)的真值表
第一个操作数    第二个操作数    结果
true       true       true
true       false       true
false       true       true
false       false       false

同様に、論理 OR 演算子も複数の組み合わせで使用でき、最初のオペランドを返しますブール値 true と評価される式の値

console.log('t' || '');//因为't'是真值,所以返回"t"
console.log('t' || 'f');//因为't'是真值,所以返回"t"
console.log('' || 'f');//因为''是假值,所以返回"f"
console.log('' || '');//因为''是假值,所以返回""

論理 OR 演算子は、変数のデフォルト値を設定するためによく使用されます

var i = 1;
var result = (true || i++);
console.log(result,i);//因为true是真值,所以不执行i++,result是true,i是1

var i = 1;
var result = (false || i++);
console.log(result,i);//因为false是假值,所以执行i++,i是2,result是1


-->

以上がJavaScript 演算子と論理演算子の包括的な理解の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。