javascript運算符語法全面概述
來源:易賢網(wǎng) 閱讀:904 次 日期:2016-07-27 15:29:58
溫馨提示:易賢網(wǎng)小編為您整理了“javascript運算符語法全面概述”,方便廣大網(wǎng)友查閱!

下面小編就為大家?guī)硪黄猨avascript運算符語法全面概述。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。

前面的話

javascript中的運算符大多由標點符號表示,少數(shù)由關鍵字表示,它們的語法言簡意賅,它們的數(shù)量卻著實不少。運算符始終都遵循著一些固定語法,只有了解并掌握這些內容,才能正確使用運算符。本文將主要介紹javascript運算符的語法概述

操作數(shù)個數(shù)

javascript的運算符總共有46個,如果根據(jù)其操作數(shù)的個數(shù)進行分類,則大多數(shù)是二元運算符(binary operator),它們的操作數(shù)都是兩個,它們將兩個表達式合并成復雜表達式

1 + 2;

true || false;

javascript中的一元運算符(unary operator)將一個表達式轉換為另一個稍復雜的表達式,主要包括以下9個:

++ -- - + ~ ! delete typeof void

a++;

typeof true;

javascript只有一個三元運算符(ternary operator),是條件判斷運算符?:,它將三個表達式合并成一個表達式

2>1 ? 2 : 1;

優(yōu)先級  

運算符優(yōu)先級控制著運算符的執(zhí)行順序,優(yōu)先級高的運算符的執(zhí)行總是先于優(yōu)先級運算符低的運算符

46個運算符總共分為14級的優(yōu)先級,從高到低依次是:

++ -- - + ~ ! delete typeof void

 * / %

 + -

 << >> >>>

 < <= > >= instanceof in

 == != === !==

 ^

 |

||

?:

= *= /= %= += -= &= ^= |= <<= >>= >>>=

,

由這14級的運算符優(yōu)先級等級可以看出:

一元運算符  > 算術運算符 > 比較運算符 > 邏輯運算符 > 三元運算符 > 賦值運算符 > 逗號運算符  

[注意]邏輯取反運算符屬于一元運算符,其優(yōu)先級最高

例子

!2<1&&4*3+1;

像上面這種情況就比較復雜,逐步來分解其運算順序

先計算一元運算符!,!2;//false

//于是表達式變?yōu)?/P>

false < 1 && 4*3 + 1;

計算算術運算符4*3+1;//13

//于是表達式變?yōu)?/P>

false < 1 && 13;

計算比較運算符<,false<1;//true

//于是表達式變?yōu)?

true && 13;//13

可以使用圓括號來強行指定運算次序

2+3*5;//17

(2+3)*5;//25;

結合性  

運算符具有兩種結合性,一種是從左向右結合,記號為L,一種是從右向左結合,記號為R。結合性指定了在多個具有同樣優(yōu)先級的運算符表達式中的運算順序

多數(shù)運算符都具有從左向右的結合性,只有一元運算符、條件運算符和賦值運算符具有從右向左的結合性

w = x + y + z;

//等價于:

w = ((x + y)+ z);

--------------------------------------

w = x = y = z;

//等價于:

w = (x = (y = z));

--------------------------------------

q = a ? b : c ? d : e ? f : g;

//等價于:

q = a ? b : (c ? d : (e ? f : g));

運算符的優(yōu)先級和結合性決定了它們在復雜表達式中的運算順序,但子表達式相互有影響時,順序會發(fā)生變化

例子

a = 1;

b = a++ + a-- * a++;

先分析該表達式中,根據(jù)優(yōu)先級的順序,分別運算遞增運算符、乘法運算符、加法運算符和賦值運算符

先計算第一個a++;//結果為1,a為2

//表達式變成

b = 1 + a-- * a++;

計算a--;//結果為2,a為1

//表達式變成

b = 1 + 2 * a++;

計算第二個a++;//結果為1,a為2

//表達式變成

b = 1 + 2 * 1;

所以,最終a = 2; b = 3;

a = 1;

b = a++ + a-- * a++;

console.log(a,b);//2 3

-----------------------------------

//類似地

a = 1;

b = a-- * a++ + a++;

console.log(a,b);//2,1

類型

一些運算符可以作用于任何數(shù)據(jù)類型,但仍然希望它們的操作數(shù)是指定類型的數(shù)據(jù),并且大多數(shù)運算符返回一個特定類型的值,在下面的運算符規(guī)則表中,箭頭前為運算符操作數(shù)的類型,箭頭后為運算結果的類型

【左值】

左值(lvalue)是一個古老的術語,指表達式只能出現(xiàn)在運算符的左側

在javascript中,變量、對象屬性和數(shù)組元素都是左值

遞增運算符++、遞減運算符--和賦值運算符的操作數(shù)類型是左值

var a = 3;

a++;//3

3--;//報錯

({}).a += '1';//'undefined1'

'test' -= 'test';//報錯

運算符規(guī)則表

運算符       操作         類型

++        增量         lval->num

--        減量         lval->num

-         求反         num->num

+         轉換為數(shù)字      num->num

~         按位求反       int->int

!         邏輯非        bool->bool

delete      刪除屬性       lval->bool

typeof      檢測類型       any->str

void       返回undefined     any->undef

******************************************************

* \ %       乘、除、求余      num,num->num

******************************************************

+ -        加、減        num,num->num

+         字符串連接       str,str->str

******************************************************

<<        左移位        int,int->int

>>        有符號右移位      int,int->int

>>>        無符號右移位      int,int->int

******************************************************

< <= > >=     比較數(shù)字順序      num,num->bool

< <= > >=     比較字母表順序     str,str->bool

instanceof    測試對象類      obj,func->bool

in        測試屬性       str,obj->bool

******************************************************

==        判斷相等       any,any->bool

!=        判斷不等       any,any->bool

===        判斷恒等       any,any->bool

!==        判斷非恒等      any,any->bool

******************************************************

&         按位與        int,int->int

******************************************************

^         按位異或       int,int->int

******************************************************

|         按位或        int,int->int

******************************************************

&&        邏輯與        any,any->any

******************************************************

||        邏輯或        any,any->any

******************************************************

?:        條件運算符       bool,any,any->any

******************************************************

=         賦值         lval,any->any

*= /= %=

+= -= &=     運算且賦值       lval,any->any

^= |= <<=

>>= >>>=

******************************************************

,         忽略第一個操作數(shù),    any,any->any

         返回第二個操作數(shù)

以上這篇javascript運算符語法全面概述就是小編分享給大家的全部內容了,希望能給大家一個參考

更多信息請查看網(wǎng)絡編程
易賢網(wǎng)手機網(wǎng)站地址:javascript運算符語法全面概述
關于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 加入群交流 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
聯(lián)系電話:0871-65317125(9:00—18:00) 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:526150442(9:00—18:00)版權所有:易賢網(wǎng)