JS重點(diǎn)之運(yùn)算符以及運(yùn)算符優(yōu)先級(jí)

JavaScript中的運(yùn)算符優(yōu)先級(jí)是一套規(guī)則坝茎。該規(guī)則在計(jì)算表達(dá)式時(shí)控制運(yùn)算符執(zhí)行的順序涤姊。具有較高優(yōu)先級(jí)的運(yùn)算符先于較低優(yōu)先級(jí)的運(yùn)算符執(zhí)行。例如嗤放,乘法的執(zhí)行先于加法思喊。

算數(shù)運(yùn)算符:

加+,減—次酌,乘*恨课,除/,求余%岳服,加加++剂公,減減——,

加減乘除求余運(yùn)算與數(shù)學(xué)上的用法完全一樣吊宋。

不過纲辽,加號(hào)+還有連接字符串的作用,其他運(yùn)算符還可以將字符串?dāng)?shù)字轉(zhuǎn)換成數(shù)值型,參見JavaScript中數(shù)據(jù)類型轉(zhuǎn)換總結(jié)中的隱式轉(zhuǎn)換部分拖吼。

++鳞上,——分為前置和后置,前置表示在使用該變量之前加/減1绿贞,后置表示在使用之后加/減1因块。

邏輯運(yùn)算符:

1.&&: 與運(yùn)算, 當(dāng)與運(yùn)算的兩個(gè)內(nèi)容都為true的時(shí)候籍铁,結(jié)果為true涡上,只要有一個(gè)內(nèi)容為false,結(jié)果都是false拒名,&& 可以讀作“并且”

2.||: 或運(yùn)算吩愧, 當(dāng)或運(yùn)算的兩個(gè)內(nèi)容都為false的時(shí)候,結(jié)果為false增显,只要有一個(gè)內(nèi)容為true雁佳,結(jié)果都是true,|| 可以讀作“或者”

3.!: 非運(yùn)算同云, 取反運(yùn)算糖权,當(dāng)內(nèi)容為true時(shí),取反結(jié)果為false炸站,當(dāng)內(nèi)容為false時(shí)星澳,取反結(jié)果為true
補(bǔ)充:

&&與||的其他用法

&&

如果兩個(gè)操作數(shù)都不是布爾類型

且兩個(gè)數(shù)值轉(zhuǎn)換成布爾類型都是true,返回第二個(gè)操作數(shù)

如果有一個(gè)操作數(shù)轉(zhuǎn)換成布爾類型是false旱易,返回這個(gè)數(shù)

var b=undefined&&null

console.log(b);

返回undefined

||

如果兩個(gè)操作數(shù)都不是布爾類型

第一個(gè)數(shù)轉(zhuǎn)換成布爾類型為true禁偎,則不往下看,返回第一個(gè)數(shù)

如果第二個(gè)數(shù)轉(zhuǎn)換成布爾類型為true阀坏,則返回第二個(gè)數(shù)值如暖。

比較運(yùn)算符:

, <, >= ,<=, == ,!=,===,!==

, <, >= ,<=和數(shù)學(xué)里表示的含義完全一樣。下面四個(gè)運(yùn)算符剛開始接觸會(huì)有點(diǎn)迷惑忌堂。

== 相等操作符

如果兩個(gè)操作數(shù)相等盒至,則返回 true。

!= 不相等操作符

如果兩個(gè)操作數(shù)不相等士修,則返回 true妄迁。

這兩個(gè)操作符都會(huì)先轉(zhuǎn)換操作數(shù)(通常稱為強(qiáng)制轉(zhuǎn)型),然后再比較它們的相等性李命。在轉(zhuǎn)換不同的數(shù)據(jù)類型時(shí),相等和不相等操作符遵循下列基本規(guī)則:

1箫老、 如果有一個(gè)操作數(shù)是布爾值封字,則在比較相等性之前先將其轉(zhuǎn)換為數(shù)值——false 轉(zhuǎn)換為 0,而true 轉(zhuǎn)換為 1;

2阔籽、如果一個(gè)操作數(shù)是字符串流妻,另一個(gè)操作數(shù)是數(shù)值,在比較相等性之前先將字符串轉(zhuǎn)換為數(shù)值笆制;
3绅这、 如果一個(gè)操作數(shù)是對(duì)象,另一個(gè)操作數(shù)不是在辆,則調(diào)用對(duì)象的 valueOf()方法证薇,用得到的基本類型值按照前面的規(guī)則進(jìn)行比較;
這兩個(gè)操作符在進(jìn)行比較時(shí)則要遵循下列規(guī)則匆篓。
1浑度、 null 和 undefined 是相等的。
2鸦概、 要比較相等性之前箩张,不能將 null 和 undefined 轉(zhuǎn)換成其他任何值。
3窗市、 如果有一個(gè)操作數(shù)是 NaN先慷,則相等操作符返回 false,而不相等操作符返回 true咨察。重要提示:
即使兩個(gè)操作數(shù)都是 NaN论熙,相等操作符也返回 false扎拣;因?yàn)榘凑找?guī)則赴肚, NaN 不等于 NaN。
如果兩個(gè)操作數(shù)都是對(duì)象二蓝,則比較它們是不是同一個(gè)對(duì)象誉券。如果兩個(gè)操作數(shù)都指向同一個(gè)對(duì)象,
則相等操作符返回 true刊愚;否則踊跟,返回 false。

下表列出了一些特殊情況及比較結(jié)果:

表達(dá)式值 表達(dá)式值
null == undefined true true == 1 true
"NaN" == NaN false true == 2 false
5 == NaN false undefined == 0 false
NaN == NaN false null == 0 false
NaN != NaN true "5"==5 true
false == 0 true 鸥诽。商玫。。

=== 全等操作符

在兩個(gè)操作數(shù)未經(jīng)轉(zhuǎn)換就相等的情況下返回 true牡借。即數(shù)值和類型都相同拳昌。

var result1 = ("55" == 55); //true,因?yàn)檗D(zhuǎn)換后相等
var result2 = ("55" === 55); //false钠龙,因?yàn)椴煌臄?shù)據(jù)類型不相等

!== 不全等操作符

在兩個(gè)操作數(shù)未經(jīng)轉(zhuǎn)換就不相等的情況下返回 true炬藤。數(shù)據(jù)類型不同就不等御铃。

var result1 = ("55" != 55); //false,因?yàn)檗D(zhuǎn)換后相等
var result2 = ("55" !== 55); //true沈矿,因?yàn)椴煌臄?shù)據(jù)類型不相等

賦值運(yùn)算符:

=上真,+=,-=羹膳,*=睡互,/=

簡(jiǎn)單的賦值操作符由等于號(hào)(=)表示,其作用就是把右側(cè)的值賦給左側(cè)的變量陵像。

如果在等于號(hào)(=)前面再添加乘性操作符就珠、加性操作符或位操作符,就可以完成復(fù)合賦值操作蠢壹。

num = num + 10; 等同于num += 10;

設(shè)計(jì)這些操作符的主要目的就是簡(jiǎn)化賦值操作嗓违。使用它們不會(huì)帶來任何性能的提升。

三元運(yùn)算符:

? :

舉個(gè)例子:

var max = (num1 > num2) ? num1 : num2;
在這個(gè)例子中图贸, max 中將會(huì)保存一個(gè)最大的值蹂季。這個(gè)表達(dá)式的意思是:如果 num1 大于 num2(關(guān)系表達(dá)式返回 true),則將 num1 的值賦給 max疏日;如果 num1 小于或等于 num2(關(guān)系表達(dá)式返回 false)偿洁,則將 num2 的值賦給 max。

位運(yùn)算符:

JavaScript也有位運(yùn)算符沟优,需要先轉(zhuǎn)換成16進(jìn)制數(shù)進(jìn)行運(yùn)算涕滋,在開發(fā)中好像還沒有用到過,了解一下即可挠阁。

javascript 中運(yùn)算符優(yōu)先級(jí)

優(yōu)先級(jí) 運(yùn)算類型 關(guān)聯(lián)性 運(yùn)算符
20 圓括號(hào) n/a ( ... )
19 成員訪問 從左到右 ... . ...
19 需計(jì)算的成員訪問 從左到右 ...[ ... ]
19 new (帶參數(shù)列表) n/a new ... ( ... )
19 函數(shù)調(diào)用 從左到右 ... ( ... )
18 new (無參數(shù)列表) 從左到右 new ...
17 后置遞增(運(yùn)算符在后) n/a ... ++
17 后置遞減(運(yùn)算符在后) n/a ... --
16 邏輯非 從右到左 ! ...
16 按位非 從右到左 ~ ...
16 一元加法 從右到左 + ...
16 一元減法 從右到左 - ...
16 前置遞增 從右到左 ++ ...
16 前置遞減 從右到左 -- ...
16 typeof 從右到左 typeof ...
16 void 從右到左 void ...
16 delete 從右到左 delete ...
15 從右到左 ... ** ...
14 乘法 從左到右 ... * ...
14 除法 從左到右 ... / ...
14 取模 從左到右 ... % ...
13 加法 從左到右 ... + ...
13 減法 從左到右 ... - ...
12 按位左移 從左到右 ... << ...
12 按位右移 從左到右 ... >> ...
12 無符號(hào)右移 從左到右 ... >>> ...
11 小于 從左到右 ... < ...
11 小于等于 從左到右 ... <= ...
11 大于 從左到右 ... > ...
11 大于等于 從左到右 ... >= ...
11 in 從左到右 ... in ...
11 instanceof 從左到右 ... instanceof ...
10 等號(hào) 從左到右 ... == ...
10 非等號(hào) 從左到右 ... != ...
10 全等號(hào) 從左到右 ... === ...
10 非全等號(hào) 從左到右 ... !== ...
9 按位與 從左到右 ... & ...
8 按位異或 從左到右 ... ^ ...
7 按位或 從左到右 ... | ...
6 邏輯與 從左到右 ... && ...
5 邏輯或 從左到右 ... || ...
4 條件運(yùn)算符 從右到左 ... ? ... : ...
3 賦值 從右到左 ... = ...
3 賦值 從右到左 ... += ...
3 賦值 從右到左 ... -= ...
3 賦值 從右到左 ... /= ...
3 賦值 從右到左 ...% = ...
3 賦值 從右到左 ... *= ...
2 yield 從右到左 yield ...
2 yield* 從右到左 yield* ...
1 展開運(yùn)算符 從左到右 ... ...
0 逗號(hào) 從左到右 ... , ...
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末宾肺,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子侵俗,更是在濱河造成了極大的恐慌锨用,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件隘谣,死亡現(xiàn)場(chǎng)離奇詭異增拥,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)寻歧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門掌栅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人码泛,你說我怎么就攤上這事猾封。” “怎么了噪珊?”我有些...
    開封第一講書人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵忘衍,是天一觀的道長(zhǎng)逾苫。 經(jīng)常有香客問我,道長(zhǎng)枚钓,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任瑟押,我火速辦了婚禮搀捷,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘多望。我一直安慰自己嫩舟,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開白布怀偷。 她就那樣靜靜地躺著家厌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪椎工。 梳的紋絲不亂的頭發(fā)上饭于,一...
    開封第一講書人閱讀 49,772評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音维蒙,去河邊找鬼掰吕。 笑死,一個(gè)胖子當(dāng)著我的面吹牛颅痊,可吹牛的內(nèi)容都是我干的殖熟。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼斑响,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼菱属!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起舰罚,我...
    開封第一講書人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤纽门,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后沸停,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體膜毁,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年愤钾,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了瘟滨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡能颁,死狀恐怖杂瘸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情伙菊,我是刑警寧澤败玉,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布敌土,位于F島的核電站,受9級(jí)特大地震影響运翼,放射性物質(zhì)發(fā)生泄漏返干。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一血淌、第九天 我趴在偏房一處隱蔽的房頂上張望矩欠。 院中可真熱鬧,春花似錦悠夯、人聲如沸癌淮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽乳蓄。三九已至,卻和暖如春夕膀,著一層夾襖步出監(jiān)牢的瞬間虚倒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來泰國打工店诗, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留裹刮,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓庞瘸,卻偏偏與公主長(zhǎng)得像捧弃,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子擦囊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348