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