JS運(yùn)算符優(yōu)先級(jí)與表達(dá)式示例詳解
前言
運(yùn)算符優(yōu)先級(jí)決定了表達(dá)式中運(yùn)算執(zhí)行的先后順序,優(yōu)先級(jí)越高的運(yùn)算符會(huì)先執(zhí)行。
運(yùn)算符優(yōu)先級(jí)
很多時(shí)候由于對(duì)運(yùn)算符優(yōu)先級(jí)的不確定,會(huì)用括號(hào)來(lái)確保表達(dá)式的執(zhí)行順序。如果搞清楚運(yùn)算符的優(yōu)先級(jí),即使不用括號(hào)也能確保表達(dá)式按照正確的順序執(zhí)行。
其實(shí)單純靠運(yùn)算符的優(yōu)先級(jí)來(lái)確定表達(dá)式的執(zhí)行過(guò)程并不是一個(gè)絕對(duì)穩(wěn)妥的做法,比如 new a()['b'] 這樣的表達(dá)式就沒(méi)法套用運(yùn)算符優(yōu)先級(jí)。當(dāng)然一般情況下,絕大多數(shù)表達(dá)式我們都可以利用運(yùn)算符優(yōu)先級(jí)來(lái)判斷,如果確實(shí)遇到比較復(fù)雜的難以直觀判斷出來(lái)的情況還是要查詢 ECMAScript262 標(biāo)準(zhǔn)中的產(chǎn)生式。
表達(dá)式
左手表達(dá)式
左手表達(dá)式即 Left-Hand-Side Expression,即能出現(xiàn)在賦值運(yùn)算左邊的表達(dá)式。幾乎所有的左手表達(dá)式都可以作為右手表達(dá)式,這在大部分編程語(yǔ)言中都是通用的。JS 中的左手表達(dá)式的詳細(xì)規(guī)則請(qǐng)看ECMAScript262-left-hand-side expression。標(biāo)準(zhǔn)中沒(méi)有定義右手表達(dá)式,因?yàn)楹戏ǖ谋磉_(dá)式只要不是左手表達(dá)式就是右手表達(dá)式,所以不需要在單獨(dú)定義。有一點(diǎn)需要注意的是 ++ 和 -- 的操作數(shù)也要是一個(gè)左手表達(dá)式。
一些細(xì)節(jié)
- 關(guān)聯(lián)性和優(yōu)先級(jí)一樣重要,關(guān)聯(lián)性決定了擁有相同優(yōu)先級(jí)的運(yùn)算符的執(zhí)行順序。
- 優(yōu)先級(jí)為 19 的除了圖中 member運(yùn)算、帶參數(shù)new ,還有帶標(biāo)簽的模版字符串(可以理解為和函數(shù)調(diào)用類(lèi)似),new.target,super作為對(duì)象使用(和成員訪問(wèn)相同)
- 函數(shù)調(diào)用的優(yōu)先級(jí)在圖中也是 19,但實(shí)際似乎優(yōu)先級(jí)是要低于 member運(yùn)算 和單參數(shù) new 運(yùn)算符的。當(dāng)函數(shù)調(diào)用后接 member 運(yùn)算符整個(gè)式子還是函數(shù)調(diào)用等級(jí)的。
- 一元加、一元減和算術(shù)運(yùn)算符的加減是不同的,一元加和一元減都會(huì)講操作數(shù)轉(zhuǎn)為 Number,這也是它可以將函數(shù)聲明轉(zhuǎn)為函數(shù)表達(dá)式的原因。
總結(jié)
到此這篇關(guān)于JS運(yùn)算符優(yōu)先級(jí)與表達(dá)式的文章就介紹到這了,更多相關(guān)JS運(yùn)算符優(yōu)先級(jí)與表達(dá)式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
千分位數(shù)字格式化(用逗號(hào)隔開(kāi) 代碼已做了修改 支持0-9位逗號(hào)隔開(kāi))的JS代碼
這篇文章主要介紹了千分位數(shù)字格式化的JS代碼,有需要的朋友可以參考一下2013-12-12Firefox+FireBug使JQuery的學(xué)習(xí)更加輕松愉快
FireBug是FireFox下最強(qiáng)大的調(diào)試插件.利用它,可以讓JQuery的學(xué)習(xí)過(guò)程更加輕松愉快.2010-01-01javascript 閉包詳解及簡(jiǎn)單實(shí)例應(yīng)用
這篇文章主要介紹了javascript 閉包詳解及應(yīng)用的相關(guān)資料,需要的朋友可以參考下2016-12-12JavaScript隨機(jī)數(shù)的組合問(wèn)題案例分析
這篇文章主要介紹了JavaScript隨機(jī)數(shù)的組合問(wèn)題,結(jié)合具體案例形式分析了JavaScript隨機(jī)數(shù)的組合問(wèn)題相關(guān)算法原理、實(shí)現(xiàn)技巧與注意事項(xiàng),需要的朋友可以參考下2020-05-05微信小程序?qū)崿F(xiàn)簡(jiǎn)易計(jì)算器
這篇文章介紹了微信小程序?qū)崿F(xiàn)簡(jiǎn)易計(jì)算器的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06