詳細解讀JavaScript中雙等號所引起的隱性類型轉換(圖文教學)
JavaScript中由==判斷所引起的轉換會引發解釋器的一些列執行步驟,接下來我們就來詳解JavaScript中雙等號引起的隱性類型轉換,需要的朋友可以參考下
引子
if語句應該是程式設計師用的比較多的語句,很多時候都要進行if判斷,if語句一般用雙等號來判斷前後兩個元素是否是一致的,假如是一致,那麼回傳是true,然後執行下面的語句,否則,執行別的語句。本文所說的隱性類型的轉換,說的是==引起的轉換。舉個簡單的例子,雙等號不是全等號,全等號是「===」三個等號,語句"1"==1,那麼一般情況下是前面的字串」1「轉換為數字1,然後進行比較。透過這個例子應該了解了什麼是隱性類型的轉換了吧!
隱性類型轉換步驟
一、先看雙等號前後有沒有NaN,如果有NaN,一律回傳false。
二、再看雙等號前後有沒有布爾,有布爾就將布爾轉換為數字。 (false是0,true是1)
三、接著看雙等號前後有沒有字串, 有三種情況:
1、對方是對象,對象使用toString()或者valueOf()進行轉換;
2、對方是數字,字串轉數字;(前面已經舉例)
3、對方是字串,直接比較;
4、其他回傳false
四、如果是數字,對方是對象,對象取valueOf()或toString()比較, 其他一律回傳false
五、null, undefined不會進行型別轉換, 但它們兩個相等
上面的轉換順序一定要牢記,面試的時候,常常會出現類型的問題。
.toString()方法和.valueOf()方法數值轉換
通常我們認為,將一個物件轉換為字串要呼叫toString()方法,轉換為數字要呼叫valueOf()方法,但真正應用的時候並沒有這麼簡單,看如下程式碼實例:
var obj = { webName: "haorooms前端博客", url:"www.jb51.net" } console.log(obj.toString()); //[object Object]
同理,我們再看valueOf()方法:
var arr = [1, 2, 3]; console.log(arr.valueOf());//[1, 2, 3]
從上面的程式碼可以看出,valueOf()方法並沒有將物件轉換為能夠反映此物件的一個數字。相反,我們用toString()
var arr = [1, 2, 3]; console.log(arr.toString());//1,2,3
註:很多朋友認為,轉換成字串首先要呼叫toString()方法, 其實這是錯誤的認識,我們應該這麼理解,呼叫toString()方法可以轉換為字串,但不一定轉換字串就是先呼叫toString()方法。
我們看下面程式碼:
var arr = {}; arr.valueOf = function () { return 1; } arr.toString = function () { return 2; } console.log(arr == 1);//true var arr = {}; arr.valueOf = function () { return []; } arr.toString = function () { return 1; } console.log(arr == 1);//true
上面程式碼我們可以看出,轉換首先呼叫的是valueOf(),假如valueOf()不是數值,那就會呼叫toString來轉換!
var arr = {}; arr.valueOf = function () { return "1"; } arr.toString = function () { return "2"; } console.log(arr == "1");//true
假如"1"是字串,那麼它首先呼叫的還是valueOf()。
var arr = [2]; console.log(arr + "1");//21
上面的例子,呼叫的是toString();因為arr.toString()之後是2。
轉換過程是這樣的,首先arr會先呼叫valueOf()方法,但是數字的此方法是簡單繼承而來,並沒有重寫(當然這個重寫不是我們實作),傳回值是陣列物件本身,並不是一個值類型,所以就轉而呼叫toString()方法,於是就實現了轉換為字串的目的。
小結
大多數物件隱式轉換為值型別都是先嘗試呼叫valueOf()方法。但是Date物件是個例外,此物件的valueOf()和toString()方法都經過精心重寫,預設是呼叫toString()方法,例如使用運算符,如果在其他算數運算環境中,則會轉而呼叫valueOf ()方法。
var date = new Date(); console.log(date + "1"); //Sun Apr 17 2014 17:54:48 GMT+0800 (CST)1 console.log(date + 1);//Sun Apr 17 2014 17:54:48 GMT+0800 (CST)1 console.log(date - 1);//1460886888556 console.log(date * 1);//1460886888557
上面是我整理給大家的,希望今後會對大家有幫助。
相關文章:
深入解析JavaScript中的arguments物件(圖文教學)
JavaScript_object基礎入門(必看篇) (圖文教學)
以上是詳細解讀JavaScript中雙等號所引起的隱性類型轉換(圖文教學)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

如何使用WebSocket和JavaScript實現線上語音辨識系統引言:隨著科技的不斷發展,語音辨識技術已成為了人工智慧領域的重要組成部分。而基於WebSocket和JavaScript實現的線上語音辨識系統,具備了低延遲、即時性和跨平台的特點,成為了廣泛應用的解決方案。本文將介紹如何使用WebSocket和JavaScript來實現線上語音辨識系

人臉偵測辨識技術已經是一個比較成熟且應用廣泛的技術。而目前最廣泛的網路應用語言非JS莫屬,在Web前端實現人臉偵測辨識相比後端的人臉辨識有優勢也有弱勢。優點包括減少網路互動、即時識別,大大縮短了使用者等待時間,提高了使用者體驗;弱勢是:受到模型大小限制,其中準確率也有限。如何在web端使用js實現人臉偵測呢?為了實現Web端人臉識別,需要熟悉相關的程式語言和技術,如JavaScript、HTML、CSS、WebRTC等。同時也需要掌握相關的電腦視覺和人工智慧技術。值得注意的是,由於Web端的計

股票分析必備工具:學習PHP和JS繪製蠟燭圖的步驟,需要具體程式碼範例隨著網路和科技的快速發展,股票交易已成為許多投資者的重要途徑之一。而股票分析是投資人決策的重要一環,其中蠟燭圖被廣泛應用於技術分析。學習如何使用PHP和JS繪製蠟燭圖將為投資者提供更多直觀的信息,幫助他們更好地做出決策。蠟燭圖是一種以蠟燭形狀來展示股票價格的技術圖表。它展示了股票價格的

WebSocket與JavaScript:實現即時監控系統的關鍵技術引言:隨著互聯網技術的快速發展,即時監控系統在各個領域中得到了廣泛的應用。而實現即時監控的關鍵技術之一就是WebSocket與JavaScript的結合使用。本文將介紹WebSocket與JavaScript在即時監控系統中的應用,並給出程式碼範例,詳細解釋其實作原理。一、WebSocket技

如何利用JavaScript和WebSocket實現即時線上點餐系統介紹:隨著網路的普及和技術的進步,越來越多的餐廳開始提供線上點餐服務。為了實現即時線上點餐系統,我們可以利用JavaScript和WebSocket技術。 WebSocket是一種基於TCP協定的全雙工通訊協議,可實現客戶端與伺服器的即時雙向通訊。在即時線上點餐系統中,當使用者選擇菜餚並下訂單

如何使用WebSocket和JavaScript實現線上預約系統在當今數位化的時代,越來越多的業務和服務都需要提供線上預約功能。而實現一個高效、即時的線上預約系統是至關重要的。本文將介紹如何使用WebSocket和JavaScript來實作一個線上預約系統,並提供具體的程式碼範例。一、什麼是WebSocketWebSocket是一種在單一TCP連線上進行全雙工

隨著網路金融的快速發展,股票投資已經成為了越來越多人的選擇。而在股票交易中,蠟燭圖是常用的技術分析方法,它能夠顯示股票價格的變動趨勢,幫助投資人做出更精準的決策。本文將透過介紹PHP和JS的開發技巧,帶領讀者了解如何繪製股票蠟燭圖,並提供具體的程式碼範例。一、了解股票蠟燭圖在介紹如何繪製股票蠟燭圖之前,我們首先需要先了解什麼是蠟燭圖。蠟燭圖是由日本人

JavaScript和WebSocket:打造高效的即時天氣預報系統引言:如今,天氣預報的準確性對於日常生活以及決策制定具有重要意義。隨著技術的發展,我們可以透過即時獲取天氣數據來提供更準確可靠的天氣預報。在本文中,我們將學習如何使用JavaScript和WebSocket技術,來建立一個高效的即時天氣預報系統。本文將透過具體的程式碼範例來展示實現的過程。 We
