JavaScript同值相等(Object.is)

語法:

Object.is(value1, value2);

value1跟value2表示兩個需要比較的值登钥。返回值是一個Boolean值。

  • 兩個值都是undefined
  • 兩個值都是null
  • 兩個值都是true or false驱负;
  • 兩個值都是相同的字符按照相同的順序組成的字符串;
  • 兩個值都指向同一個對象;
  • 兩個值都是數(shù)組并且
    1. 都是+0
    2. 都是-0
    3. 都是NaN
    4. 都是初0和NaN以外的其他數(shù)字
    這種相等性判斷邏輯和傳統(tǒng)的 == 運算不同患雇,== 運算符會對它兩邊的操作數(shù)做隱式類型轉(zhuǎn)換(如果它們類型不同)跃脊,然后才進行相等性比較,(所以才會有類似 "" == false 等于 true的現(xiàn)象)苛吱,但 Object.is 不會做這種類型轉(zhuǎn)換酪术。

這與 === 運算符的判定方式也不一樣。=== 運算符(和== 運算符)將數(shù)字值 -0+0 視為相等,并認為 Number.NaN 不等于 NaN绘雁。

Object.is('foo', 'foo');     // true
Object.is(window, window);   // true

Object.is('foo', 'bar');     // false
Object.is([], []);           // false

var foo = { a: 1 };
var bar = { a: 1 };
Object.is(foo, foo);         // true
Object.is(foo, bar);         // false

Object.is(null, null);       // true

// 特例
Object.is(0, -0);            // false
Object.is(-0, -0);           // true
Object.is(NaN, 0/0);         // true

polyfill

if (!Object.is) {
  Object.is = function(x, y) {
    // SameValue algorithm
    if (x === y) { // Steps 1-5, 7-10
      // Steps 6.b-6.e: +0 != -0
      return x !== 0 || 1 / x === 1 / y;
    } else {
      // Step 6.a: NaN == NaN
      return x !== x && y !== y;
    }
  };
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末橡疼,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子庐舟,更是在濱河造成了極大的恐慌欣除,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件挪略,死亡現(xiàn)場離奇詭異历帚,居然都是意外死亡,警方通過查閱死者的電腦和手機杠娱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進店門挽牢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人墨辛,你說我怎么就攤上這事卓研。” “怎么了睹簇?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵奏赘,是天一觀的道長。 經(jīng)常有香客問我太惠,道長磨淌,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任凿渊,我火速辦了婚禮梁只,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘埃脏。我一直安慰自己搪锣,他們只是感情好,可當我...
    茶點故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布彩掐。 她就那樣靜靜地躺著构舟,像睡著了一般。 火紅的嫁衣襯著肌膚如雪堵幽。 梳的紋絲不亂的頭發(fā)上狗超,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天,我揣著相機與錄音朴下,去河邊找鬼努咐。 笑死,一個胖子當著我的面吹牛殴胧,可吹牛的內(nèi)容都是我干的渗稍。 我是一名探鬼主播,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼竿屹!你這毒婦竟也來了音五?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤羔沙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后厨钻,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體扼雏,經(jīng)...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年夯膀,在試婚紗的時候發(fā)現(xiàn)自己被綠了诗充。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,745評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡诱建,死狀恐怖蝴蜓,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情俺猿,我是刑警寧澤茎匠,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站押袍,受9級特大地震影響诵冒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜谊惭,卻給世界環(huán)境...
    茶點故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一汽馋、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧圈盔,春花似錦豹芯、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至癌佩,卻和暖如春木缝,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背围辙。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工我碟, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人姚建。 一個月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓矫俺,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子厘托,可洞房花燭夜當晚...
    茶點故事閱讀 44,652評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 運算符是處理數(shù)據(jù)的基本方法友雳,用來從現(xiàn)有的值得到新的值。JavaScript 提供了多種運算符铅匹,本章逐一介紹這些運算...
    徵羽kid閱讀 678評論 0 0
  • 標簽: 我的筆記 ---學習資料:http://javascript.ruanyifeng.com/ 1. 導論 ...
    暗夜的怒吼閱讀 810評論 0 1
  • 表達式 表達式是由數(shù)字押赊、運算符、數(shù)字分組符號(如括號)包斑、自由變量和約束變量等以能求得數(shù)值的有意義排列方法所得的組合...
    劼哥stone閱讀 560評論 0 4
  • 算術(shù)運算符 JavaScript 共提供10個算術(shù)運算符流礁,用來完成基本的算術(shù)運算。 加法運算符:x + y 減法運...
    guyigg閱讀 1,180評論 0 1
  • 一個完整的JavaScript實現(xiàn)包含了三個部分: ECMAScript DOM BOM罗丰。 JS的特點: 解釋型語...
    咻咻咻滴趙大妞閱讀 455評論 0 7