javascript(7.6)演算子

2341 ワード

一、条件演算子(?:)
条件演算子はjavascriptの中で唯一の3元演算子であり、直接に「三元符」と呼ぶ場合があります.この演算子は通常、「?」と書いてありますが、コードの中では、この演算子は3つの操作数を持っています.最初の操作数は「?」の前に、2番目の操作数は「?」と「:」の間にあり、3番目の操作数は「:」の後にあります.
x > o ? x : -x   // x    
条件演算子の動作数は、任意の種類であってもよい.最初の操作数はブール値として扱われます.本当の値であれば、2番目の操作数を計算し、計算結果を返します.そうでなければ、最初の動作数が偽の値である場合、3番目の動作数を計算し、計算結果を返します.第二および第三の動作数は、常にその中の一つを計算し、両者が同時に実行することは不可能である.
if文を使っても同じ効果があります.「?:」演算子は簡単な書き方を提供しています.ここは「?:」の典型的な応用シーンです.変数が定義されているかどうかを判断します.定義があればそれを使います.定義がない場合はデフォルト値を使います.
greeting = "hello" + (username ? username : "there");
これは以下のif文のコードと等価です.
greeting = "hello";
if(username)
  greeting +=username;
else
  greeting +="there";
二、typeof演算子
typeofは1要素演算子であり、その1つの操作数の前に置くと、操作数は任意の種類であってもよい.戻り値は、オペランドの種類を示す文字列です.
typeofの最も一般的な使い方は、表現に書いてあります.例えば、
三、delete演算子
deleteはオブジェクト属性または配列要素を削除するために使用されます.値を割り当て、インクリメント、インクリメント演算子のように、deleteも副作用があります.削除操作をするためのもので、1つの値を返すためのものではありません.
var o = {x:1,y:2};   //      
delete o.x;          //      
"x"in o              //       false,             


var a = [1,2,3];    //      
delete a[2];        //           
2 in a              //      false,          

  ,    a.length,        3,    ,             ,          “  ”,   “  ”         ,           。
四、void演算子
voidは演算子であり、動作数の前に現れるものであり、動作数は任意の種類であってもよい.この演算子はよく使われていません.動作数は通常通り計算されますが、計算結果を無視してundefinedに戻ります.voidは操作数の値を無視するため、動作数が副作用を持つ場合はvoidを使用してプログラムをより意味的にする.
ps:この演算子はクライアントのURL--Javascript:URLに副作用を持つ表式を書くことができますが、voidはこの表式の計算結果をブラウザに表示させる必要がありません.例えば、HTMLコードの「a」タブにはよくvoid演算子が使われます.
<a href="javascript:void window.open();">       </a>
もちろん、「a」のオンリークリーンに一つのイベントハンドラを結びつけることによって、hrefに「javascript:URL」と書くよりもはっきりしています.そうすると、オペレータvoidはなくてもいいです.
五、コンマ演算子(、)
コンマ演算子は二項演算子であり、その演算数は任意の種類であってもよい.まず左の操作数を計算して、右の操作数を計算して、最後に右の操作数の値を返します.
基本文法はこうです.
i=0,j=1,k=2;
計算結果は2です.基本的には下記のコードと等価です.
i = 0;j = 1; k =2;
常に左側の表式を計算しますが、計算結果は無視されます.つまり、左の表式だけが副作用を持っています.カンマ演算子を使ってコードがよりよくなります.コンマ演算子の最も一般的なシーンは、forループであり、このforループは通常、複数の循環変数を有しています.
//for          var      
//           
//       (i++ j--)    (for    )   
for(var i =0,j =10;i<j;i++,j--)
console.log(i+j);