成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

ES2018 學(xué)習(xí)筆記(2)&& 和 || 的運(yùn)算優(yōu)先級(jí)

james / 2660人閱讀

摘要:為什么比優(yōu)先級(jí)高起因偶然在網(wǎng)上搜索運(yùn)算符優(yōu)先級(jí),幾乎每個(gè)版本都告訴讀者比優(yōu)先級(jí)更高,包括這樣的權(quán)威網(wǎng)站也不例外。這與自己經(jīng)驗(yàn)不符它們應(yīng)該是優(yōu)先級(jí)一樣的。

為什么 && 比 || 優(yōu)先級(jí)高?

起因

偶然在網(wǎng)上搜索 js 運(yùn)算符優(yōu)先級(jí),幾乎每個(gè)版本都告訴讀者 &&|| 優(yōu)先級(jí)更高,包括 MSN 這樣的權(quán)威網(wǎng)站也不例外。

MDN Operator_Precedence

這與自己經(jīng)驗(yàn)不符 —— 它們應(yīng)該是優(yōu)先級(jí)一樣的。

論證
0 || 1 && 0 || 2

// 按 && 優(yōu)先級(jí)高
( 0 || ( 1 && 0 ) ) || 2

// 按優(yōu)先級(jí)一致

0 || ( 1 && ( 0 || 2 ) )

無論怎么執(zhí)行結(jié)果都一樣

詭辯

因?yàn)橛?MDN 背書,中英文版本都是一樣,心想這事情不會(huì)那么簡(jiǎn)單。于是,打開 ES 規(guī)范來找尋真相。

12.13 Binary Logical Operators
Syntax

LogicalANDExpression[In, Yield, Await] :

BitwiseORExpression [?In, ?Yield, ?Await]

LogicalANDExpression [?In, ?Yield, ?Await] && BitwiseORExpression [?In, ?Yield, ?Await]

LogicalORExpression[In, Yield, Await]:

LogicalANDExpression [?In, ?Yield, ?Await]

LogicalORExpression [?In, ?Yield, ?Await] || LogicalANDExpression [?In, ?Yield, ?Await]

細(xì)細(xì)品品以上定義,會(huì)發(fā)現(xiàn)邏輯或表達(dá)式包含邏輯與表達(dá)式。再來看看的求值過程:

12.13.3 Runtime Semantics: Evaluation

LogicalANDExpression : LogicalANDExpression && BitwiseORExpression

Let lref be the result of evaluating LogicalANDExpression.

Let lval be ? GetValue(lref).

Let lbool be ToBoolean(lval).

If lbool is false, return lval.

Let rref be the result of evaluating BitwiseORExpression.

Return ? GetValue(rref).

LogicalORExpression : LogicalORExpression || LogicalANDExpression

Let lref be the result of evaluating LogicalORExpression.

Let lval be ? GetValue(lref).

Let lbool be ToBoolean(lval).

If lbool is true, return lval.

Let rref be the result of evaluating LogicalANDExpression.

Return ? GetValue(rref).

回看開始的例子里的語句 0 || 1 && 0 || 2

根據(jù)定義這是一條邏輯或表達(dá)式

執(zhí)行邏輯等價(jià)于 ( 0 || ( 1 && 0 ) ) || 2

這么理解,就符合 && 優(yōu)先級(jí)更高的說法。

總結(jié)

來個(gè)復(fù)雜點(diǎn)的

0 || 1 && 0 || 2 && 3 && 0 || 1 && 0  

按照規(guī)范來執(zhí)行

( ( 0 || ( 1 && 0 ) ) || (  2 && 3 && 0  ) ) || ( 1 && 0 )

將兩者理解成不區(qū)分優(yōu)先級(jí),從左到右執(zhí)行

0 || ( 1 && ( 0 || ( 2 && ( 3 && ( 0 || ( 1 && 0 ) ) ) ) ) )

所以,理論上是 && 優(yōu)先級(jí)更高,但是,使用時(shí)可以用等價(jià)方式。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/96677.html

相關(guān)文章

  • js雙等號(hào)探索(二): a==3&&a==4 為true ?

    摘要:前言為是可以實(shí)現(xiàn)的。在中,非對(duì)象參數(shù)將被視為一個(gè)凍結(jié)的普通對(duì)象,因此會(huì)返回。注意所以一定要是對(duì)象,如果是非對(duì)象的其他基本類型如,,被視為凍結(jié)對(duì)象,不能重寫,則不起效果。第四步為這時(shí)已經(jīng)為,運(yùn)行返回值也為。最后為如上所示為,為,則為其他鏈接 前言 a==3 && a==4為True是可以實(shí)現(xiàn)的。具體代碼如下所示: let a=[]; var x=3; a.valueOf=()=>{ ...

    cheng10 評(píng)論0 收藏0
  • You-Dont-Know-JS / Types & Grammar 筆記

    摘要:以下這個(gè)情況并非獨(dú)有,任何采用二進(jìn)制浮點(diǎn)數(shù),依據(jù)都會(huì)如此這是因?yàn)橛枚M(jìn)制浮點(diǎn)表示并不精確。是,不過更準(zhǔn)確的定義應(yīng)該是,,因?yàn)閷?shí)際上它還是個(gè)。是聲明變量的默認(rèn)值。數(shù)字還有個(gè)特殊的數(shù)值數(shù)字和數(shù)字對(duì)象 原文 You Dont Know JS: Types & Grammar 類型 null undefined boolean number string object symbol -- a...

    Drummor 評(píng)論0 收藏0
  • ES6 Features系列:Template Strings & Tagged Templ

    摘要:由兩部分組成模板起始符,稱為沉音符反引號(hào),其內(nèi)容被識(shí)別為字符串模板。其實(shí)這是通過屬性操作中的結(jié)果,也就是說屬性將對(duì)控制符進(jìn)行轉(zhuǎn)義從而實(shí)現(xiàn)按照普通字符輸出。的語法是緊跟在后面,兩者間不能有空格或制表符等。 1. Brief ES6(ECMAScript 6th edition)于2015年7月份發(fā)布,雖然各大瀏覽器仍未全面支持ES6,但我們可以在后端通過Node.js 0.12和io....

    MyFaith 評(píng)論0 收藏0
  • Python學(xué)習(xí)筆記

    入坑 Python自從進(jìn)入公司,到現(xiàn)在也有半年的時(shí)間。這半年的時(shí)間從 python 到入門到開發(fā)了幾個(gè)小項(xiàng)目,類型涵蓋了web應(yīng)用 程序、爬蟲程序 (scrapy),python腳本工具,自動(dòng)化工具。對(duì) python 語言也越來越熟悉,當(dāng)然也有所感悟和總結(jié)。首先 Python 真的讓語言成 了一個(gè)工具,入門代價(jià)很小,上手能夠開發(fā)出小工具,可以更快體驗(yàn)到編程的樂趣。但是做到pythonic需要更多的...

    社區(qū)管理員 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<