99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

等值運(yùn)算符

2018-06-16 15:19 更新

語(yǔ)法:

EqualityExpression : RelationalExpression EqualityExpression == RelationalExpression EqualityExpression != RelationalExpression EqualityExpression === RelationalExpression EqualityExpression !== RelationalExpressionEqualityExpressionNoIn : RelationalExpressionNoIn EqualityExpressionNoIn == RelationalExpressionNoIn EqualityExpressionNoIn != RelationalExpressionNoIn EqualityExpressionNoIn === RelationalExpressionNoIn EqualityExpressionNoIn !== RelationalExpressionNoIn

 語(yǔ)義:

 執(zhí)行相等比較運(yùn)算符的結(jié)果總是Boolean類(lèi)型。表示是否由運(yùn)算符指定的關(guān)系對(duì)兩操作數(shù)成立。

 EqualityExpressionNoIn跟EqualityExpression完全按相同的方式執(zhí)行,出了RelationalExpressionNoIn要代替RelationalExpression被執(zhí)行。

The Equals Operator ( == )

 產(chǎn)生式 EqualityExpression : EqualityExpression == RelationalExpression 按照下面的過(guò)程執(zhí)行 :

  1. 令 lref 為解釋執(zhí)行 EqualityExpression 的結(jié)果 .
  2. 令 lval 為 GetValue(lref).
  3. 令 rref 為解釋執(zhí)行 RelationalExpression 的結(jié)果 .
  4. 令 rval 為 GetValue(rref).
  5. 返回做用相等比較算法于 rval == lval( 參見(jiàn) 11.9.3) 的結(jié)果

The Does-not-equals Operator ( != )

 產(chǎn)生式 EqualityExpression : EqualityExpression != RelationalExpression 按照下面的過(guò)程執(zhí)行 :

  1. 令 lref 為解釋執(zhí)行 EqualityExpression 的結(jié)果 .
  2. 令 lval 為 GetValue(lref).
  3. 令 rref 為解釋執(zhí)行 RelationalExpression 的結(jié)果 .
  4. 令 rval 為 GetValue(rref).
  5. 令 r 為做用相等比較算法于 rval == lval( 參見(jiàn) 11.9.3) 的結(jié)果
  6. 如果 r 為 true,返回 false. 否則 , 返回 true.

抽象相等比較算法

 比較運(yùn)算x==y, 其中x和 y是值,產(chǎn)生true或者false。這樣的比較按如下方式進(jìn)行:

  1. 若Type(x)與Type(y)相同, 則若Type(x)為Undefined, 返回true。若Type(x)為Null, 返回true。若Type(x)為Number, 則若x為NaN, 返回false。若y為NaN, 返回false。若x與y為相等數(shù)值, 返回true。若x 為 +0 且 y為?0, 返回true。若x 為 ?0 且 y為+0, 返回true。返回false。若Type(x)為String, 則當(dāng)x和y為完全相同的字符序列(長(zhǎng)度相等且相同字符在相同位置)時(shí)返回true。 否則, 返回false。若Type(x)為Boolean, 當(dāng)x和y為同為true或者同為false時(shí)返回true。 否則, 返回false。當(dāng)x和y為引用同一對(duì)象時(shí)返回true。否則,返回false。
  2. 若x為null且y為undefined, 返回true。
  3. 若x為undefined且y為null, 返回true。
  4. 若Type(x) 為 Number 且 Type(y)為String, 返回comparison x == ToNumber(y)的結(jié)果。
  5. 若Type(x) 為 String 且 Type(y)為Number,
  6. 返回比較ToNumber(x) == y的結(jié)果。
  7. 若Type(x)為Boolean, 返回比較ToNumber(x) == y的結(jié)果。
  8. 若Type(y)為Boolean, 返回比較x == ToNumber(y)的結(jié)果。
  9. 若Type(x)為String或Number,且Type(y)為Object,返回比較x == ToPrimitive(y)的結(jié)果。
  10. 若Type(x)為Object且Type(y)為String或Number, 返回比較ToPrimitive(x) == y的結(jié)果。
  11. 返回false。

 按以上相等之定義:

  • 字符串比較可以按這種方式強(qiáng)制執(zhí)行: "" + a == "" + b 。
  • 數(shù)值比較可以按這種方式強(qiáng)制執(zhí)行: +a == +b 。
  • 布爾值比較可以按這種方式強(qiáng)制執(zhí)行: !a == !b 。

 等值比較操作保證以下不變:

  • A != B 等價(jià)于 !(A==B) 。
  • A == B 等價(jià)于 B == A ,除了A與B的執(zhí)行順序。

 相等運(yùn)算符不總是傳遞的。例如,兩個(gè)不同的String對(duì)象,都表示相同的字符串值; == 運(yùn)算符認(rèn)為每個(gè)String對(duì)象都與字符串值相等,但是兩個(gè)字符串對(duì)象互不相等。例如:

  • new String("a") == "a" 和 "a" == new String("a") 皆為true。
  • new String("a") == new String("a") 為false。

 字符串比較使用的方式是簡(jiǎn)單地檢測(cè)字符編碼單元序列是否相同。不會(huì)做更復(fù)雜的、基于語(yǔ)義的字符或者字符串相等的定義以及Unicode規(guī)范中定義的collating order。所以Unicode標(biāo)準(zhǔn)中認(rèn)為相等的String值可能被檢測(cè)為不等。實(shí)際上這一算法認(rèn)為兩個(gè)字符串已經(jīng)是經(jīng)過(guò)規(guī)范化的形式。

嚴(yán)格等于運(yùn)算符 ( === )

 產(chǎn)生式 EqualityExpression : EqualityExpression === RelationalExpression 按照下面的過(guò)程執(zhí)行 :

  1. 令 lref 為解釋執(zhí)行 EqualityExpression 的結(jié)果 .
  2. 令 lval 為 GetValue(lref).
  3. 令 rref 為解釋執(zhí)行 RelationalExpression 的結(jié)果 .
  4. 令 rval 為 GetValue(rref).
  5. 返回做用嚴(yán)格相等比較算法于 rval === lval( 參見(jiàn) 11.9.6) 的結(jié)果

The Strict Does-not-equal Operator ( !== )

 產(chǎn)生式 EqualityExpression : EqualityExpression !== RelationalExpression 按照下面的過(guò)程執(zhí)行 :

  1. 令 lref 為解釋執(zhí)行 EqualityExpression 的結(jié)果 .
  2. 令 lval 為 GetValue(lref).
  3. 令 rref 為解釋執(zhí)行 RelationalExpression 的結(jié)果 .
  4. 令 rval 為 GetValue(rref).
  5. 令 r 為做用嚴(yán)格相等比較算法于 rval === lval( 參見(jiàn) 11.9.6) 的結(jié)果
  6. 如果 r 為 true,返回 false. 否則 , 返回 true.

嚴(yán)格等于比較算法

 比較 x===y,x 和 y 為值,需要產(chǎn)出 true 或 false。比較過(guò)程如下:

  1. 如果 Type(x) 與 Type(y) 的結(jié)果不一致,返回 false,否則
  2. 如果 Type(x) 結(jié)果為 Undefined,返回 true
  3. 如果 Type(x) 結(jié)果為 Null,返回 true
  4. 如果 Type(x) 結(jié)果為 Number,則如果 x 為 NaN,返回 false如果 y 為 NaN,返回 false如果 x 與 y 為同一個(gè)數(shù)字,返回 true如果 x 為 +0,y 為 -0,返回 true如果 x 為 -0,y 為 +0,返回 true返回 false
  5. 如果 Type(x) 結(jié)果為 String,如果 x 與 y 為完全相同的字符序列(相同的長(zhǎng)度和相同的字符對(duì)應(yīng)相同的位置),返回 true,否則,返回 false
  6. 如果 Type(x) 結(jié)果為 Boolean,如果 x 與 y 都為 true 或 false,則返回 true,否則,返回 false
  7. 如果 x 和 y 引用到同一個(gè) Object 對(duì)象,返回 true,否則,返回 false

 此算法與 SameValue 算法在對(duì)待有符號(hào)的零和 NaN 上表現(xiàn)不同。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)