1、一元運算符數組
++ -- + - 分別 爲:自增,自減,正,負函數
2、特殊的幾個運算符測試
= 賦值運算符 + 字符串運算符 , 逗號運算符編碼
1.= spa
說明:=爲賦值 == 比較中的等於(值相等便可) === 比較中恆等(值和原理都相等)code
2.+對象
說明:正常狀況下,在運算中,數值類型的優先級是最高的,任何類型的變量都要轉換成數值類型進行運算,而後若是是比較就返回出boolean值,若是是算術運算則返回運算結果。可是在出現‘+’時,字符串的優先級最高,任何類型都要轉換成String類型。例:ci
var box=10, box1=20, box2='年齡:'; alert(box+box1+box2);//30年齡: alert(box2+box+box1);//年齡:1020 alert(box2+(box+box1));//年齡:30
3.,字符串
說明:能夠在一條語句中執行多個操做,如上面聲明多個變量、數組、對象中多個屬性數學
3、算術運算符
+ - * / % += -= *= /= %= 若是在算術運算符的值不是數值,則後臺會使用Number()轉型函數將其轉換爲數值(隱式轉換)。正常來講,算術運算符和正常的數學運算差很少,括號的優先級是最高的。須要注意的是:String類型在進行Number()轉換時,要遵循的規則(有一個非數字就是NaN);還有'+'與字符串在一塊兒時,再也不是算術運算符,而變成連字符。還有,對象的算術運算,空對象和返回值是字符串的對象,會返回NaN(空對象轉數值是NaN,有返回值的經過 toString方法來轉換)
var num=10; alert(num+=num);//20 此時 num=20 alert(num-=num);//0 此時 num=0 alert(num*=num);//100 此時 num=0 alert(num/=num);//1 此時 num=0/0=NaN alert(num%=num);//0 此時 num=NaN 任何和NaN進行運算的結果都是NaN //注:若是直接這麼運行下去,則會出現下面的值是NaN的問題,由於num被賦了新的值,並非最開始的10,這個其實在後來是運行了的。想要輸出上面所想要的結果,只能一個一個的運行。
4、關係運算符
< > <= >= == != === !==
規則:1.有一個數值,都要轉換成數值進行比較。2.有字符串時,進行字母的ASCII編碼進行比較,且只比較一位,再也不比較第二位(字符串和數值比較時,也是這個規則)。3.若是是對象,與對象的返回值進行比較。4.NaN不等於任何數值,他自己也不相等,5.對象則比較他們是否指向同一個對象,指向同一個對象則返回true,不一個則返回false,且兩個空的對象也是不相等的,由於他們存放的位置不同,因此不相等。6.null與undefined的值是相等的,可是類型是不等的。
特殊值對比表
表達式 | 值 |
---|---|
null==undefined | true |
'NaN'==NaN | false |
5==NaN | false |
NaN==NaN | false |
true==1 | true |
false==0 | true |
true==2 | false |
undefined==0 | false |
null==0 | false |
'100'==100 | true |
'100'===100 | false |
undefined==null | true |
5、邏輯運算符
&& || !
1.&&
有一個操做數爲假返回值 就是假。當第一個操做數是真是纔會運行第二個操做數。當含有對象時,若是第一個操做數爲假,則返回false,而不執行對象;當含有null,undefined時,若是第一個操做數爲真,則分別返回null或undefined,不然會返回false
2.||
有一個操做數爲真則返回真。當第一個操做數的結果爲true時,就不會再執行第二個操做數了。當含有對象時,若是第一個操做數是對象,則返回第一個操做對象;若是第二個操做數是對象,只有當第一個操做數是false時,纔會返回第二個操做數對象,不然返回true。當含有null,undefined時,當第一個操做數和第二個操做數都是null,undefined時,才返回null,undefined(這個我不是特別肯定,可是又找不到驗證的方法,先這樣記着);
var box= (5>4) || null; var box1= (5<4) || null; var box3= null || (5>4); var box4= null || (5<4); alert(box+','+box1+','+box3+','+box4);//true,null,true,false
3.!
非真即假,非假即真, !!爲取反再取反
6、三元運算符
= 以後是判斷條件 ? 是執行 第一個是真的時候執行 :後面是假的時候執行
var box5 = 5>4 ? alert('真'):alert('假'); //真 //至關於 var box5=''; if (5>4) { box5='真'; } else { box5='假'; } alert(box5);//真 //這兩個是不同的,可是具體哪兒不同,忘掉了 //判斷變量存在不存在 //var x=(typeof f)!='undefined' ? alert(f) : alert(null);//這個是爲了測試,下面纔是實際應用 var y=(typeof z)!='undefined' ? z : z=null; alert(y); var c; if((typeof cc)!='undefined'){ c=cc }else{ c=null; } alert(c);//null