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