摘要:運算符為確定兩個運算數(shù)是否相等,會對左右兩邊運算數(shù)進行類型轉(zhuǎn)換。在比較時,該運算符還遵守下列規(guī)則值和相等。如果兩個運算數(shù)指向同一個對象,那么符號返回否則兩個運算數(shù)不等。
今天在翻閱Node.js中assert模塊的時候,看到這么一行代碼:
assert.equal({a: {b: 1}}, {a: {b: 1}}); //AssertionError: { a: { b: 1 } } == { a: { b: 1 } }
在第一眼掃過以后,懷疑官方文檔有錯誤的時候,我就知道我應該去補補我的JavaScript基礎知識了。
==運算符為確定兩個運算數(shù)是否相等,會對左右兩邊運算數(shù)進行類型轉(zhuǎn)換。
執(zhí)行類型轉(zhuǎn)換的規(guī)則如下:
1.如果一個運算數(shù)是Boolean值,在檢查相等性之前,把它轉(zhuǎn)化成數(shù)字值。false轉(zhuǎn)化成0,true轉(zhuǎn)換為1。
2.如果一個運算數(shù)是字符串,另一個是數(shù)字,在檢查相等性之前,要嘗試把字符串轉(zhuǎn)換成數(shù)字。
3.如果一個運算數(shù)是對象,另一個是字符串,在檢查相等性之前,要嘗試把對象轉(zhuǎn)換成字符串。
4.如果一個運算數(shù)是對象,另一個是數(shù)字,在檢查相等性之前,要嘗試把對象轉(zhuǎn)換成數(shù)字。
在比較時,該運算符還遵守下列規(guī)則:
1.值null和undefined相等。
2.在檢查相等性時,不能把null和undefined轉(zhuǎn)換成其他值。
3.如果某個運算數(shù)是NaN,等號將返回false,非等號將返回true。
4.如果兩個運算都是對象,那么比較它們的引用值。如果兩個運算數(shù)指向同一個對象,那么符號返回true,否則兩個運算數(shù)不等。
example:
var a = {a:"zuckjet"};
var b = {a:"zuckjet"};
var c = a;
console.log(a==b); //false,a和b均是引用類型,指向兩個不同地址
console.log({a:"zuckjet"}=={a:"zuckjet"}); //false
console.log(a==c); //true
console.log(a==b); //false
文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/82340.html
摘要:多數(shù)運算符都是由標點符號表示,比如和。通常會根據(jù)需要對操作數(shù)進行類型轉(zhuǎn)換左值是一個古老的屬于,它是指表達式只能出現(xiàn)在賦值運算符的左側(cè)。也稱為嚴格相等運算符,它用來檢測兩個操作數(shù)是否嚴格相等。運算符的檢測規(guī)則是和運算符的求反。 源代碼: https://github.com/RobinQu/Programing-In-Javascript/blob/master/chapters/...
摘要:完整清單是中添加,此處不予介紹布爾值用來表示可能是真或假的值。結果抽象比較運算符在比較它們之前在類型之間進行自動轉(zhuǎn)換。中的隱式轉(zhuǎn)換稱為強制類型轉(zhuǎn)換,并在規(guī)范中定義。這些內(nèi)置類型可用于在不同類型之間進行顯式轉(zhuǎn)換。 翻譯:瘋狂的技術宅原文:https://www.valentinog.com/bl... 本文首發(fā)微信公眾號:前端先鋒歡迎關注,每天都給你推送新鮮的前端技術文章 show...
摘要:來源編程精解中文第三版翻譯項目原文譯者飛龍協(xié)議自豪地采用谷歌翻譯部分參考了編程精解第版在機器的表面之下,程序在運轉(zhuǎn)。本章將會介紹程序當中的基本元素,包括簡單的值類型以及值運算符。示例中的乘法運算符優(yōu)先級高于加法。 來源:ApacheCN『JavaScript 編程精解 中文第三版』翻譯項目原文:Values, Types, and Operators 譯者:飛龍 協(xié)議:CC BY-NC...
摘要:檢測函數(shù)從技術上講,中的函數(shù)是引用類型,同樣存在構造函數(shù),每個函數(shù)都是其實例,比如不好的寫法然而,這個方法亦不能跨幀使用,因為每個幀都有各自的構造函數(shù),好在運算符也是可以用于函數(shù)的,返回。 上周寫過一篇讀書筆記《編寫可維護的JavaScript》之編程實踐,其中 第8章 避免『空比較』是博主在工作中遇坑較多的雷區(qū),所以特此把該章節(jié)重新整理分享,希望大家不再坑隊友(>﹏<)。 在 Jav...
摘要:我們再來回顧下文首提出的這個比較運算,首先為對象,則調(diào)用函數(shù)將其轉(zhuǎn)化為字符串對于右側(cè)的,首先會進行顯式類型轉(zhuǎn)換,將其轉(zhuǎn)化為。 JavaScript 運算符規(guī)則與隱式類型轉(zhuǎn)換詳解 從屬于筆者的現(xiàn)代 JavaScript 開發(fā):語法基礎與工程實踐系列文章,主要探討 JavaScript 中令人迷惑的加減乘除與比較等常見運算中的規(guī)則與隱式類型轉(zhuǎn)換;本文中涉及的參考資料全部聲明在了JavaSc...
摘要:我們再來回顧下文首提出的這個比較運算,首先為對象,則調(diào)用函數(shù)將其轉(zhuǎn)化為字符串對于右側(cè)的,首先會進行顯式類型轉(zhuǎn)換,將其轉(zhuǎn)化為。 JavaScript 運算符規(guī)則與隱式類型轉(zhuǎn)換詳解 從屬于筆者的現(xiàn)代 JavaScript 開發(fā):語法基礎與工程實踐系列文章,主要探討 JavaScript 中令人迷惑的加減乘除與比較等常見運算中的規(guī)則與隱式類型轉(zhuǎn)換;本文中涉及的參考資料全部聲明在了JavaSc...
閱讀 664·2021-11-11 16:55
閱讀 2166·2021-11-11 16:55
閱讀 1958·2021-11-11 16:55
閱讀 2350·2021-10-25 09:46
閱讀 1614·2021-09-22 15:20
閱讀 2295·2021-09-10 10:51
閱讀 1712·2021-08-25 09:38
閱讀 2626·2019-08-30 12:48