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

資訊專欄INFORMATION COLUMN

js操作符類型轉(zhuǎn)換

zr_hebo / 986人閱讀

摘要:在上面代碼中調(diào)用方法返回的是自身方法字符串,因此和都成立。我們還可以對的方法進(jìn)行重寫加減規(guī)則為先求兩側(cè)表達(dá)式原始值若其中一個(gè)為字符串,返回字符串合并兩側(cè)表達(dá)式轉(zhuǎn)化為數(shù)字類型進(jìn)行運(yùn)算還有一些特殊情況

先看一段代碼,執(zhí)行結(jié)果有些奇怪,a>=b同時(shí)a<=b但是a!=b。

var a = function() {};
var b = function() {};
a == b // false
a != b // true
a >= b // true
a <= b // true

這涉及到j(luò)s中操作符引起的類型轉(zhuǎn)換。

全等于(==)

ES規(guī)范中==的判斷流程為:

1.ReturnIfAbrupt(x)
2.ReturnIfAbrupt(y)
3.如果Type(x)與 Type(y)相同,返回x===y
4.如果x為null,y為undefined,返回true
5.如果x為undefined,y為null,返回true
6.如果Type(x)是Number,Type(y)是String,返回x == ToNumber(y)
7.如果Type(x)是String,Type(y)是Number,返回ToNumber(x) == y
8.如果Type(x)是Boolean,返回ToNumber(x) == y
9.如果Type(y)是Boolean,返回x == ToNumber(y)
10.如果Type(x)是String、Number或者Symbol,Type(y)是Object,返回x == ToPrimitive(y)
11.如果Type(x)是Object,Type(y)是String、Number或者Symbol,返回ToPrimitive(x)==y
12.返回false

ReturnIfAbrupt判斷參數(shù)是否正常值,如有報(bào)錯(cuò),中斷執(zhí)行;Type函數(shù)相當(dāng)于typeOf操作符結(jié)果;ToPrimitive返回參數(shù)的原始值,在全等于操作符中返回對象依次嘗試調(diào)用valueOf或者toString方法的結(jié)果,直到結(jié)果為非對象

總結(jié)一下就是:
1、如果兩側(cè)參數(shù)類型相同,使用嚴(yán)格等于比較;
2、null與undefined兩兩相等;
3、若有布爾類型則轉(zhuǎn)化為數(shù)字;
4、字符串和數(shù)字比較時(shí)把字符串轉(zhuǎn)化為數(shù)字,進(jìn)入1;
5、Object類型與Number、String、Symbol類型比較時(shí),使用Object對象的原始值進(jìn)行比較
6、其他情況返回false

在上面代碼中a和b的類型都是“function”,應(yīng)使用嚴(yán)格等于進(jìn)行比較,它們有不同的引用并不是同一個(gè)值,所以結(jié)果為false

大于、小于(>、<)

大于、小于首先使用valueOf方法對左右表達(dá)式求原始值,再進(jìn)行比較。在上面代碼中a、b調(diào)用valueOf方法返回的是自身方法字符串,因此>=和<=都成立。
我們還可以對a、b的valueOf方法進(jìn)行重寫

a.valueOf=function(){return 1;}
b.valueOf=function(){return 2;}
a > b // false
a < b // true
加、減(+、-)

規(guī)則為:
1、先求兩側(cè)表達(dá)式原始值
2、若其中一個(gè)為字符串,返回字符串合并
3、兩側(cè)表達(dá)式轉(zhuǎn)化為數(shù)字類型進(jìn)行運(yùn)算
還有一些特殊情況:

Infinity-Infinity // NaN
Infinity+Infinity // Infinity
-Infinity+(-Infinity) // -Infinity
+0+0 // +0
+0+(-0) // +0
-0+(-0) // -0
+5+(-5) // +0

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

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

相關(guān)文章

  • js類型轉(zhuǎn)化三兩事兒

    摘要:即在這個(gè)隱式強(qiáng)制類型轉(zhuǎn)換中,即不會(huì)等于也不會(huì)等于。按照正常人類的腦回路,應(yīng)該是將先轉(zhuǎn)換為布爾值,然后再將兩個(gè)布爾值對比。為什么和就可以避開操作符的坑呢它們進(jìn)行強(qiáng)制類型轉(zhuǎn)換時(shí)的轉(zhuǎn)換規(guī)則又是怎樣的。 在js中,類型轉(zhuǎn)換是一個(gè)被非常多人詬病的地方。新手看了會(huì)發(fā)矇,老手看了會(huì)頭疼。 類型轉(zhuǎn)換,又成為強(qiáng)制類型轉(zhuǎn)換,主要區(qū)分為顯式強(qiáng)制類型轉(zhuǎn)換和隱式強(qiáng)制類型轉(zhuǎn)換 按我理解,類型轉(zhuǎn)換的意思就很明顯,就...

    vpants 評論0 收藏0
  • 掌握 Javascript 類型轉(zhuǎn)換:隱式轉(zhuǎn)換救救孩子

    摘要:看下面的代碼和會(huì)對操作數(shù)執(zhí)行條件判斷,如果操作數(shù)不是布爾值,會(huì)先執(zhí)行類型轉(zhuǎn)換后再執(zhí)行條件判斷。大家記住這個(gè)規(guī)則布爾值如果與其他類型進(jìn)行抽象比較,會(huì)先用將布爾值轉(zhuǎn)換為數(shù)字再比較。 在上一篇中我們聊過了 JS 類型轉(zhuǎn)換的規(guī)則和我發(fā)現(xiàn)的一些常見書籍中關(guān)于類型轉(zhuǎn)換的一些小錯(cuò)誤,當(dāng)碰到顯示類型轉(zhuǎn)換的時(shí)候大家可以按照這些規(guī)則去拆解出答案。但 JS 中存在一些很隱晦的隱式類型轉(zhuǎn)換,這一篇就來談下我對...

    weapon 評論0 收藏0
  • 有關(guān)javascript強(qiáng)制轉(zhuǎn)換不得不說的故事

    摘要:我們首先了解一下中有關(guān)類型轉(zhuǎn)換的知識(shí)。新增類型拋出異常從列表可以明顯看到少了一個(gè)類型轉(zhuǎn)換為的規(guī)則。這里要強(qiáng)調(diào)一點(diǎn)第二個(gè)表達(dá)式?jīng)]有涉及到強(qiáng)制類型轉(zhuǎn)換。如果文中有錯(cuò)誤或者有某些強(qiáng)制轉(zhuǎn)換的情形沒有涉及到請及時(shí)留言告知,我會(huì)修改并補(bǔ)充進(jìn)去。 javascript是一門非常奇特的語言,它有時(shí)候奇特的會(huì)讓人懷疑人生。比如讓我們看一下下面的一些奇葩例子: false == 0 ...

    xcold 評論0 收藏0
  • 重學(xué)JS: 隱式強(qiáng)制類型轉(zhuǎn)換

    摘要:隱式強(qiáng)制類型轉(zhuǎn)換指的是那些隱藏的強(qiáng)制類型轉(zhuǎn)換,副作用也不是很明顯,事實(shí)上,只要自己覺得不夠明顯的強(qiáng)制類型轉(zhuǎn)換都可以算作隱式強(qiáng)制類型轉(zhuǎn)換,接下來,此文將會(huì)介紹幾種常見的隱式類型轉(zhuǎn)換。 隱式強(qiáng)制類型轉(zhuǎn)換指的是那些隱藏的強(qiáng)制類型轉(zhuǎn)換,副作用也不是很明顯,事實(shí)上,只要自己覺得不夠明顯的強(qiáng)制類型轉(zhuǎn)換都可以算作隱式強(qiáng)制類型轉(zhuǎn)換,接下來,此文將會(huì)介紹幾種常見的隱式類型轉(zhuǎn)換。 加法操作符 轉(zhuǎn)換規(guī)則: ...

    Fourierr 評論0 收藏0
  • JS】關(guān)于JS的一些知識(shí)點(diǎn)(JS基礎(chǔ),純記錄)

    摘要:如何讓根據(jù)拆箱轉(zhuǎn)換,以及的隱式轉(zhuǎn)換,可以如下寫為什么計(jì)算機(jī)中所有的數(shù)據(jù)都是以二進(jìn)制存儲(chǔ)的,所以在計(jì)算機(jī)計(jì)算時(shí)要把數(shù)據(jù)先轉(zhuǎn)換成二進(jìn)制進(jìn)行計(jì)算,然后把計(jì)算結(jié)果轉(zhuǎn)換成十進(jìn)制。會(huì)存在精度丟失問題和的二進(jìn)制都是以無線循環(huán)的小數(shù)的二進(jìn)制的二進(jìn)制 本想著記筆記里,但是筆記里沒有分類,還是以文章的形式,當(dāng)個(gè)人總結(jié)吧,這一篇就當(dāng)作JS基礎(chǔ)篇的記錄吧,有修改的和新增的持續(xù)更新~ 關(guān)于JS的一些小技巧 1:...

    SwordFly 評論0 收藏0
  • 原生JS大揭秘—揭開數(shù)據(jù)類型轉(zhuǎn)換的面紗

    摘要:可以將其他類型轉(zhuǎn)成字符串函數(shù)可以將任意類型的值轉(zhuǎn)為布爾值。提示空數(shù)組空對象轉(zhuǎn)換為布爾型也是。 在JS中數(shù)據(jù)類型轉(zhuǎn)換有兩種 相關(guān)資料參閱 官方ecma-5規(guī)范阮一峰老師類型轉(zhuǎn)換規(guī)范對相等==定義 強(qiáng)制類型轉(zhuǎn)換Number() Number函數(shù)將字符串轉(zhuǎn)為數(shù)值,要比parseInt函數(shù)嚴(yán)格很多,只要有一個(gè)字符是非數(shù)字(空格、+、-除外),那么就會(huì)被轉(zhuǎn)為NaN。 showImg(http...

    Moxmi 評論0 收藏0

發(fā)表評論

0條評論

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