閱讀571 返回首頁    go 阿裏雲 go 技術社區[雲棲]


js運算符複習

運算符就是完成操作的一係列符號,它有七類:

賦值運算符(=,+=,-=,*=,/=,%=,<<=,>>=,|=,&=)

算術運算符(+,-,*,/,++,--,%)

比較運算符(>,<,<=,>=,==,===,!=,!==)

邏輯運算符(||,&&,!)

條件運算(?:)

位移運算符(|,&,<<,>>,~,^)

字符串運算符( + )

算術運算符

基本運算符

“+”:對數字進行代數求和,連接多個字符串或連接字符串與數字,此時會自動把數字轉化為字符串然後拚接

“-”:對操作數進行取反操作,對數字進行減法操作,字符串-數字時會自動先把字符串轉換為數字

“*”:對兩個數進行乘法運算,同號為正異號為負

“/”:對兩個運算數進行除法運算,同號正異號負

“%”:返回兩個除數的餘數,和第一個運算數的符號相同

複合賦值運算符

“+=”:

“-=”:

“*=”:

“/=”:

“%=”:

自增與自減

“++”:對唯一運算符進行遞增操作(每次加1);運算數必須為一個變量、數組的一個元素或對象的屬性,若運算數非數值則運算符會把它先轉化為數值,符號位置決定運算結果

“--”:對唯一運算符進行遞減操作(每次減1);運算數必須為一個變量、數組的一個元素或對象的屬性,若運算數非數值則運算符會把它先轉化為數值

注意:符號位置決定運算結果:符號位於運算數之前(先進行遞增/遞減操作,再進行求值);符號位於運算數之後(先求值,再進行遞增/遞減操作)

關係運算符

大小關係檢測

“<”:如果a小於b,則返回true,否則返回false

“<=”:如果a小於等於b,則返回true,否則返回false

“>”:如果a大於b,則返回true,否則返回false

“>=”:如果a大於等於b,則返回true,否則返回false

操作規則:數值與數值間比較它們的代數值,數值和其他則先把其他轉化為數值然後比較,字符串間逐字符比較他們的unicode數值,字符串和非數值間線轉化為字符串再比較,運算數既無數值也無字符串則線轉化為數值或字符串在比較,無法轉化為數值和字符串時則返回false,與NaN比較返回false

等值關係檢測

相等比較:操作符有== 和!= ;類型轉換(布爾值——true為1,false為0;對象——調用valueOf() 得到基本類型;字符串與數值的比較——字符串轉換為數值);比較原則(null與undefined——相等;NaN ——與任何數值都不相等包括其自身;對象——是否屬於同一對象 是為== 否為!=)。

相同比較:操作符有===和!== 比較兩個運算數的返回值及數據類型是否相同;比較的原則(值類型間比較——隻有數據類型相同,且數值相等時才能夠相同;值類型與引用類型比較——肯定不相同;引用類型間比較——比較它們的引用值即內存地址)

對象運算符

“in”:判斷左側運算數是否為右側運算數的成員

“instancesof”:判斷對象實例是否屬於某個類或構造函數

“new”:根據構造函數創建一個新的對象並初始化該對象

“delete”:刪除指定對象的屬性、數組元素或變量

“./[]”:存取對象和數組元素

“()”:函數調用,改變運算符優先級等

邏輯運算符

“!邏輯非”:空字符串/0/null/NaN/undefined返回true,對象/非空字符串/非0數值返回false,連續使用兩次則可以將任意類型轉為布爾型

特性:如果運算數的值為false則返回true,否則返回false;連續兩次!,可將任意類型轉為布爾型值

“&&邏輯與”:同為true才為true否則為false,當第一個操作數為false則不再對第二個操作數求值;第一個操作數為對象/兩個操作數都是對象則返回第二個操作數,第二個操作數為對象第一個操作數為true時返回該對象,一個操作數為null/nan/undefined返回null/nan/undefined

“||邏輯或”:同為false則為false否則為true,第一個為true不再操作第二個;第一個操作數為對象/同為對象返回第一個操作數,第一個操作數為false返回第二個操作數,兩個操作數都為null/nan/undefined則返回null/nan/undefined

位運算符

位運算符包括前31位數值位和第32位符號位,符號位為0為正數為1為負數,無符號隻能為正數且可以有32位數值使數值範圍加大,其數值範圍:-2147483648~2147483647;正數用純二進製存儲,31位中每位表示2的冪,用0補充無用位;負數用二進製補碼存儲(確定該數字非負版本的二進製表示,求得二進製反碼,既要把0替換為1把1替換為0,在二進製反碼上加1),NaN和infinity被當作0來處理;

邏輯位運算

“按位非~”:0返回值1,1返回值0

“按位與&”:對應位全為1則為1否則為0

“按位或|”:任何一位為1則為1否則為0

“按位異或^”:既不同時為1也不同時為0時返回1否則返回0

位移操作

“左移<<”:對數值的所有位左移指定位數,所有空位用0補充,相當於左移1位對其乘2左移2位對其乘4以此類推

“有符號右移>>”:將數值的所有位右移指定的位數,移出的位被舍棄,保留符號位,右移一位對其除二,右移兩位對其除四以此類推

“無符號右移>>>”:正數-與有符號右移效果相同,負數-會出現無限大的數值

“複合賦值運算符”:位操作符與等號結合,複合賦值不會有性能方麵的提升

位移操作:左移<<:;有符號右移>>:;無符號右移>>>:;複合賦值運算符:。

其他運算符

“?:”:條件運算符,簡潔的if else

“typeof”:類型判斷運算符

“,”:在一行語句中執行多個不同的操作

“void”:舍棄運算數的值,返回undefined作為表達式的值

最後更新:2017-04-18 16:00:28

  上一篇:go 4月26日,雲棲大會·南京峰會見!
  下一篇:go 方法注入(Method injection)