jsの中の|、&&と!使用法

2263 ワード

&&||JQueryソースコード内では特に広く使われており、ネット上でいくつかの例を参考に、その使い方を検討してみました.
1. && function a(){ alert("a"); return true; } function b(){ alert("b"); return true; } var c=a()&&b(); alert(c); a()&&b():a()を実行してtrueを返すと、b()を実行してbの値を返す.a()を実行してfalseを返すと、式全体がa()の値を返し、b()は実行しない.
2. ||
function a(){ alert("a"); return true; } function b(){ alert("b"); return false; } var c=a()||b(); alert(c); a()|b():a()を実行してtrueを返すと、式全体がa()の値を返し、b()は実行しない.a()を実行してfalseを返すと、b()を実行し、b()の値を返す.
3. !
js !         ,            !     ,   !            ,

(1)!変数をbooleanタイプに変換できます.null、undefined、空の文字列の反転はfalseで、残りはtrueです.!null=true
    !undefined=true

    !''=true

    !100=false

    !'abc'=false   

(2,)!!タイプ判断によく用いられ、第一歩!(変数)の後に論理取反演算を行い、jsでは初心者がこのような肥大化したコードを書くことが多い:変数aが非空であると判断し、未定義または非空列でなければ方法体の内容var aを実行できない;if(a!=null&&typeof(a)!=undefined&&a!=''){//aコンテンツがあってこそ実行されるコード}実際にはif(!!a){//aコンテンツがあってこそ実行されるコードを書くだけです...上と同じ効果が得られます.aは、実際の意味を持つ変数のみが実行されます.そうしないと、変数null、undefined、および'空白列は、次のコードを実行しません.
まとめることができて、“!”論理と演算であり、任意の変数と論理的にブール値に変換できます.論理和の逆演算であり、特に後者はタイプを判断する際にコードが簡潔で効率的であり、null、undefined、空の文字列を複数回判断する冗長コードを省く.
     :&&       ||,      !      

  alert((1 && 3 || 0) && 4);//結果4①alert(1&&3‖0&&4);//結果3②alert(0&&3|#1&&4);//結果4③
解析:文①:1&&3は3=>3を返し、0は3=>3&&4は4を返し、②:まず1&&3は3を返し、0&&4は0を返し、最後に実行結果比較3||0は3を返し、③:先に0&&3は0を返し、1&&4は4を返し、最後に実行結果比較0||4は4を返す
注意:0以外の整数はtrue、undefined、nullと空の文字列」「false.&&&||は、2つのオペランドのうちの1つを返します.&&、左オペランドがダミーの場合、左オペランドを返し、そうでなければ右オペランドを返します.|、左オペランドがダミーの場合、右オペランドを返します.そうでなければ左オペランドを返します.ダミーには空の文字列があります」「,数値0と-0,NaN,false,nullとundefined.よく考えてみると,&&左が真の値であれば,結果は右の操作数に依存するが,|左が偽であれば結果は右に依存する.だからjsはこのようにして,大雅を傷つけず,より良い柔軟性を提供すると思う.&&と「原則:左の結果が全体&&/||の結果を決める場合、右の計算は行われません.たとえば、20&&(i++)+2という式では、まず&&&左の20を計算して偽の値0を得ます.この場合、右が真であれ偽であれ結果には影響しません(偽であればjsにとって左の値を返します)ので、右の演算、つまり右の演算は行われません(i++)+1は実行されません.
転載先:https://www.cnblogs.com/yunshangwuyou/p/8997021.html