摘要:要比較相等性之前,不能將和轉(zhuǎn)換成其他任何值。如果有一個(gè)操作數(shù)是,則相等操作符返回,而不相等操作符返回。重要提示即使兩個(gè)操作數(shù)都是,相等操作符也返回因?yàn)榘凑找?guī)則,不等于。
關(guān)系運(yùn)算符
關(guān)系運(yùn)算符有小于(<)、大于(>)、小于等于(<=)和大于等于(>=)四種,它們都返回一個(gè)布爾值
《javascript高級(jí)程序設(shè)計(jì)》書中的規(guī)則是這樣描述運(yùn)算規(guī)則:
(1)如果兩個(gè)操作數(shù)都是數(shù)值,則執(zhí)行數(shù)值比較; (2)如果兩個(gè)操作數(shù)都是字符串,則比較兩個(gè)字符串對應(yīng)的字符編碼值; (3)如果一個(gè)操作數(shù)是數(shù)值,則將另一個(gè)操作數(shù)轉(zhuǎn)換為一個(gè)數(shù)值,然后執(zhí)行數(shù)值比較; (4)如果一個(gè)操作數(shù)是對象,則調(diào)用這個(gè)對象的 valueOf()方法,用得到的結(jié)果按照前面> 的規(guī)則執(zhí)行比較,如果對象沒有 valueOf()方法,則調(diào)用 toString()方法,并用得到的結(jié)果根據(jù)前面的規(guī)則執(zhí)行比較; (5)如果一個(gè)操作數(shù)是布爾值,則先將其轉(zhuǎn)換為數(shù)值,然后再執(zhí)行比較。
關(guān)系運(yùn)算圖譜:
==> 圖譜分析:
(1)undefined本質(zhì)是NaN,任何操作數(shù)與 NaN 進(jìn)行關(guān)系比較,結(jié)果都是 false
(2)null本質(zhì)是0,boolean本質(zhì)是0或1
(3)如果兩個(gè)操作數(shù)都是字符串,則比較兩個(gè)字符串對應(yīng)的字符編碼值(a-97,A-65, 0-48);
(4)object可能隱式轉(zhuǎn)換成numbe或者string,視情況而定
"Brick" < "alphabet"; // true "23" < "3"; // true "23" < 3; //false "a" < 3; // false,因?yàn)?a"被轉(zhuǎn)換成了 NaN undefined < 1; // false,因?yàn)閡ndefined會(huì)被轉(zhuǎn)換成NaN undefined > 1; // false null < 1; // true,因?yàn)閡ndefined會(huì)被轉(zhuǎn)換成0相等操作符
相等操作符有兩組:相等和不相等—先轉(zhuǎn)換再比較,全等和不全等—僅比較而不轉(zhuǎn)換
== 和 != 兩個(gè)操作符都會(huì)先轉(zhuǎn)換操作數(shù)(通常稱為強(qiáng)制轉(zhuǎn)型),然后再比較它們的相等性
《javascript高級(jí)程序設(shè)計(jì)》書中的規(guī)則是這樣描述運(yùn)算規(guī)則:
(1)如果有一個(gè)操作數(shù)是布爾值,則在比較相等性之前先將其轉(zhuǎn)換為數(shù)值—false 轉(zhuǎn)換為 0,而true 轉(zhuǎn)換為 1; (2)如果一個(gè)操作數(shù)是字符串,另一個(gè)操作數(shù)是數(shù)值,在比較相等性之前先將字符串轉(zhuǎn)換為數(shù)值; (3)如果一個(gè)操作數(shù)是對象,另一個(gè)操作數(shù)不是,則調(diào)用對象的 valueOf()方法,用得到的基本類型值按照前面的規(guī)則進(jìn)行比較; 這兩個(gè)操作符在進(jìn)行比較時(shí)則要遵循下列規(guī)則。 (4)null 和 undefined 是相等的。 (5)要比較相等性之前,不能將 null 和 undefined 轉(zhuǎn)換成其他任何值。 (6)如果有一個(gè)操作數(shù)是 NaN,則相等操作符返回 false,而不相等操作符返回 true。重要提示:即使兩個(gè)操作數(shù)都是 NaN,相等操作符也返回 false;因?yàn)榘凑找?guī)則,NaN 不等于 NaN。 (7)如果兩個(gè)操作數(shù)都是對象,則比較它們是不是同一個(gè)對象。如果兩個(gè)操作數(shù)都指向同一個(gè)對象,則相等操作符返回 true;否則,返回 false。
相等運(yùn)算圖譜:
==> 圖譜分析:
(1)null 和 undefined 是相等且不能將 null 和 undefined 轉(zhuǎn)換成其他任何值
(2)對象是否相等由其指向決定
(3)boolean的本質(zhì)依然是0和1,字符串和數(shù)值的比較要轉(zhuǎn)成數(shù)值
null == undefined; // true "NaN" == NaN; // false 5 == NaN; // false NaN == NaN; // false NaN != NaN; // true false == 0; // true true == 1; // true true == 2; // false undefined == 0; // false null == 0; // false "5" == 5; //true
=== 和 !== 兩個(gè)操作符不會(huì)進(jìn)行類型轉(zhuǎn)換直接比較相等性
建議:在知曉變量類型的情況下使用全等和不全等進(jìn)行判別
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/87143.html
摘要:一寫在前面最近重讀高級(jí)程序設(shè)計(jì),總結(jié)下來,查漏補(bǔ)缺。但這種影響是單向的修改命名參數(shù)不會(huì)改變中對應(yīng)的值。這是因?yàn)閷ο蟮拈L度是由傳入的參數(shù)個(gè)數(shù)決定的,不是由定義函數(shù)時(shí)的命名參數(shù)的個(gè)數(shù)決定的。實(shí)際改變會(huì)同步,改變也會(huì)同步 一、寫在前面 最近重讀《JavaScript高級(jí)程序設(shè)計(jì)》,總結(jié)下來,查漏補(bǔ)缺。 二、JS簡介 2.1 JS組成 ECMAscript:以ECMA-262為基礎(chǔ)的語言,由...
摘要:本質(zhì)上是由一組無序名值對組成的。浮點(diǎn)數(shù)值的最高精度是位小數(shù),但在進(jìn)行計(jì)算時(shí)其精度遠(yuǎn)遠(yuǎn)不如證書。例如這是使用基于數(shù)值的浮點(diǎn)計(jì)算的通病,并非獨(dú)此一家數(shù)值范圍。 函數(shù)名不能使用關(guān)鍵字(typeof不行但typeOf可以,區(qū)分大小寫) 標(biāo)識(shí)符就是指變量、函數(shù)、屬性的名字,或者函數(shù)的參數(shù)。 第一個(gè)字符必須是一個(gè)字母、下劃線(_)或者一個(gè)美元符號(hào)($) 其他字符可以是字母、下劃線、美元符號(hào)或...
摘要:寫在開頭本篇是小紅書筆記的第六篇,也許你會(huì)奇怪第六篇筆記才寫語法基礎(chǔ),筆者是不是穿越了。可移步筆者的文章中替換方式參考文檔高級(jí)程序設(shè)計(jì)作者以樂之名本文原創(chuàng),有不當(dāng)?shù)牡胤綒g迎指出。 showImg(https://segmentfault.com/img/bVblGMc?w=600&h=400); 寫在開頭 本篇是小紅書筆記的第六篇,也許你會(huì)奇怪第六篇筆記才寫語法基礎(chǔ),筆者是不是穿越了。...
摘要:如果為假值,不傳或者傳入,函數(shù)都會(huì)返回但是,傳入這個(gè)值是完全有可能的,所以這種判斷形勢是不正確的或者使用來判斷也可以原始類型優(yōu)于封裝類型對象擁有六個(gè)原始值基本類型布爾值,數(shù)字,字符串,,和對象。 作為一個(gè)前端新人,多讀書讀好書,夯實(shí)基礎(chǔ)是十分重要的,正如蓋樓房一樣,底層穩(wěn)固了,才能越壘越高。從開始學(xué)習(xí)到現(xiàn)在,基礎(chǔ)的讀了紅寶書《JavaScript高級(jí)程序設(shè)計(jì)》,犀牛書《JavaScri...
摘要:數(shù)據(jù)類型中有種簡單數(shù)據(jù)類型也稱為基本數(shù)據(jù)類型和。因?yàn)樘厥庵当徽J(rèn)為是一個(gè)空的對象引用。盡管和有這樣的關(guān)系,但它們的用途完全不同。這樣做不僅可以體現(xiàn)作為空對象指針的慣例,而且也有助于進(jìn)一步區(qū)分和。 數(shù)據(jù)類型 ECMAScript中有5種簡單數(shù)據(jù)類型(也稱為基本數(shù)據(jù)類型):undefined,null,boolean,number和string。 typeof typeof null會(huì)返回o...
閱讀 2082·2021-11-24 09:39
閱讀 1536·2021-10-11 10:59
閱讀 2489·2021-09-24 10:28
閱讀 3367·2021-09-08 09:45
閱讀 1263·2021-09-07 10:06
閱讀 1657·2019-08-30 15:53
閱讀 2056·2019-08-30 15:53
閱讀 1411·2019-08-30 15:53