javascript論理演算子「??」と「&&」
5014 ワード
一、まず??(論理または)を話します.字面的には前後がfalseである時だけfalseに戻ります.そうでないとtrueに戻ります.
これはつまり
1、「??」の前がfalseである限り、「124124124124; 124;」の後がtrueであるかfalseであるかどうかを問わず、「124124124; 124;」の後の値を返します.
2、「??」の前がtrueである限り、「124124124124; 124;」の後がtrueであるかfalseであるかどうかを問わず、「124124124; 124;」の前の値を返します.
----------------------------------------------------
二、次のように言ってください.文面から言えば、前後がtrueの時だけtrueに戻ります.そうしないとfalseに戻ります.
これは意味します
1、「&&」の前がfalseである限り、「&&」の後がtrueであろうとfalseであろうと、結果は「&」の前の値に戻ります.
2、「&&」の前がtrueである限り、「&&」の後がtrueであろうとfalseであろうと、結果は「&&」の後の値に戻ります.
まとめてみましょう.
1、「??」の前がfalseである限り、「124124124; 124; 124;」の後がtrueであるかfalseであるかどうかを問わず、結果として「124124124; 124;」の後の値を返します.
2、「??」の前がtrueである限り、「124124124124; 124;」の後がtrueであるかfalseであるかどうかを問わず、結果として「124124124; 124;」の前の値に戻ります.
3、前がfalseである限り、「&&」の後がtrueであろうとfalseであろうと、結果は「&&」の前の値に戻ります.
4、「&&」の前がtrueである限り、「&&」の後がtrueであろうとfalseであろうと、結果は「&&」の後の値に戻ります.
前の二つのテストから分かるように、論理演算子、「??」と「&&&」はいずれも短絡原則に従い、シンボルの前の真偽を確認すれば、戻り値を確定することができます.
説明したいのは、「&&」の優先度が「124 124」より高いということです.以下のテスト:
反証原理によれば、私たちは「?124;」の優先度が「&&」より低くないと仮定しています.
上記の結論によれば(1)、(1 124 124; a')は前の値の1に戻り、(1&2)結論に基づいて(4)は後の値の2に戻るべきである.これは明らかに正しくないので、「&&」の優先度は「124 124」より高いことが分かります.共有:http://www.cnblogs.com/pigtail/archive/2012/03/09/2387486.html
alert(true||false); // true
alert(false||true); // true
alert(true||true); // true
alert(false||false); // false
しかし、深い意味では、別の天地があります.次のコードを試してみます.alert(0||1);
明らかに、前の0はfalseを意味し、後の1はtrueを意味すると知っていますが、上の結果はtrueであるべきです.次のコードを見てください.alert(2||1);
私達は知っています.前の2はtrueで、後の1もtrueです.その帰りの結果は何ですか?テストの結果は2です.続きを見ます.alert('a'||1);
同じく、前の'a'はtrueで、後ろの1もtrueです.テストの結果は'a'です.alert(''||1);
上から知っています.前の'はfalseで、後の1はtrueで、結果は1です.下を見てくださいalert('a'||0);
前の'a'はtrueで、後の0はfalseで、戻りの結果は'a'です.次の通りです.alert('a'||'b');
前の'a'はtrueで、後ろの'b'はfalseで、結果は'a'です.私達は次のように続けます.alert(''||0);
前の'はfalseで、後の0はfalseで、戻りの結果は0です.alert(0||'');
前の0はfalseで、後の'はfalseで、結果は'です.これはつまり
1、「??」の前がfalseである限り、「124124124124; 124;」の後がtrueであるかfalseであるかどうかを問わず、「124124124; 124;」の後の値を返します.
2、「??」の前がtrueである限り、「124124124124; 124;」の後がtrueであるかfalseであるかどうかを問わず、「124124124; 124;」の前の値を返します.
----------------------------------------------------
二、次のように言ってください.文面から言えば、前後がtrueの時だけtrueに戻ります.そうしないとfalseに戻ります.
alert(true&&false); // false
alert(true&&true); // true
alert(false&&false); // false
alert(false&&true); // false
そして、上記の経験から、「&&」の前後は、単にブールタイプではないことを確認します.alert(''&&1);
結びは'に戻ります.'&''前''はfalseで、後は1がtrueです.alert(''&&0);
結びは'に戻ります.'&'前''はfalseで、後は0もfalseです.alert('a'&&1);
結び目は1に戻ります.「&」の前の''aはtrueで、後は1もtrueです.alert('a'&&0);
結びは0に戻ります.「&」の前の''aはtrueで、後は0はfalseです.alert('a'&&'');
結びは'に戻ります.'&''の前''aはtrueで、後は'falseです.alert(0&&'a');
結びは0に戻ります.「&」の前の'0はfalseで、後は'a'がtrueです.alert(0&&'');
結びは0に戻ります.「&」の前の'0はfalseで、後は'でfalseです.これは意味します
1、「&&」の前がfalseである限り、「&&」の後がtrueであろうとfalseであろうと、結果は「&」の前の値に戻ります.
2、「&&」の前がtrueである限り、「&&」の後がtrueであろうとfalseであろうと、結果は「&&」の後の値に戻ります.
まとめてみましょう.
1、「??」の前がfalseである限り、「124124124; 124; 124;」の後がtrueであるかfalseであるかどうかを問わず、結果として「124124124; 124;」の後の値を返します.
2、「??」の前がtrueである限り、「124124124124; 124;」の後がtrueであるかfalseであるかどうかを問わず、結果として「124124124; 124;」の前の値に戻ります.
3、前がfalseである限り、「&&」の後がtrueであろうとfalseであろうと、結果は「&&」の前の値に戻ります.
4、「&&」の前がtrueである限り、「&&」の後がtrueであろうとfalseであろうと、結果は「&&」の後の値に戻ります.
前の二つのテストから分かるように、論理演算子、「??」と「&&&」はいずれも短絡原則に従い、シンボルの前の真偽を確認すれば、戻り値を確定することができます.
説明したいのは、「&&」の優先度が「124 124」より高いということです.以下のテスト:
alert(1||'a'&&2);
戻り結果は1です反証原理によれば、私たちは「?124;」の優先度が「&&」より低くないと仮定しています.
上記の結論によれば(1)、(1 124 124; a')は前の値の1に戻り、(1&2)結論に基づいて(4)は後の値の2に戻るべきである.これは明らかに正しくないので、「&&」の優先度は「124 124」より高いことが分かります.共有:http://www.cnblogs.com/pigtail/archive/2012/03/09/2387486.html