目錄
  在Javascript中判斷相等關係有雙等號(==)和三等號(===)兩種。其中雙等號(==)是值相等,而三等號(===)是嚴格相等(值及類型是否完全相等)。 " >  在Javascript中判斷相等關係有雙等號(==)和三等號(===)兩種。其中雙等號(==)是值相等,而三等號(===)是嚴格相等(值及類型是否完全相等)。
首頁 web前端 js教程 Javascript中關於雙等號隱性轉換機制的範例

Javascript中關於雙等號隱性轉換機制的範例

Oct 27, 2017 am 09:28 AM
javascript js 轉換

  在Javascript中判斷相等關係有雙等號(==)和三等號(===)兩種。其中雙等號(==)是值相等,而三等號(===)是嚴格相等(值及類型是否完全相等)。

因此有幾個常識知識:

1、對於string,number等基礎類型,==和===是有區別的
  1)不同類型間比較,==之比較「轉換成相同類型後的值」看「值」是否相等,===如果類型不同,其結果就是不等
  2)同類型比較,直接進行「值」比較,兩者結果一樣

2、對於Array,Object等高階類型,==和===是沒有區別的
  進行「指標位址」比較

#3、基礎類型與進階類型,==和===是有區別的
  1)對於==,將高階轉換為基礎類型,進行「值」比較
  2)因為類型不同,= ==結果為false

換句話說,雙等號(==)在運算的時候會進行型別轉換,而三等號(== =)則不會。

如:

alert('55' == 55); //true
alert('55' === 55); //false
登入後複製

Javascript語言中五大基本資料型別(原始值,也叫簡單資料型別):即Undefined、Null、Boolean、Number 和String 型。由於這些原始類型佔據的空間是固定的,所以可將他們儲存在較小的記憶體區域 - 堆疊中。這樣儲存便於迅速查尋變數的值。 (詳見:http://www.w3school.com.cn/js/pro_js_value.asp)

Javascript中使用雙等號(==)判斷相等的隱性轉換機制:

1,如果兩邊都是簡單類型:

  1,1,兩邊都是簡單類型,且類型相同,則直接進行比較。

console.log(1==1); //true
console.log("1"=="1"); //true
console.log(false==false); //true
console.log(null==null); //true
console.log(undefined==undefined); //true
登入後複製

  1.2,兩邊都是簡單類型,類型不同,則先轉換為數字比較(其中Boolean只有兩個值:true==1,false==0;null與undefined相等;字串數字等於數字值,空字串""==0;)

console.log(1==true); //true
console.log(0==false); //true
console.log(1=="1"); //true
console.log(0==""); //true
console.log(0==null); //false
console.log(0==undefined); //false
console.log(null==undefined); //true
登入後複製

2,如果一邊是簡單類型,另一邊是引用類型(高級類型),則高級類型隱式轉換成簡單類型再比較。

console.log(Object==Object); //true
console.log(Object=={}); //false
console.log(0=={}); //false
console.log(0==[]); //true
console.log(Array==Array); //true
console.log(Object==Array); //false
登入後複製

3,如果兩邊都是引用型別(進階型別),則會進行「指標位址」比較。

重點-toString()和valueOf()

很多人看到這兩個方法的第一個感覺就是,toString()方法將一個物件轉換為字串,valueOf方法將一個物件轉化為數值。

這種想法很片面,我們透過以下兩個例子來看看:

var obj={
    name:"熊仔其人",
    getName:function(){ return $(this).name; }
};

console.log(obj.toString()); //[object Object]
登入後複製

定義一個obj對象,呼叫它的toString方法,傳回值是[object Object],發現並未像我們想像的一樣傳回值其內容的字串表示。

var arr=[1,2,3];
console.log(arr.valueOf()); //(3) [1, 2, 3]
登入後複製

定義一個陣列arr,呼叫它的valueOf方法,傳回值是[1, 2, 3],發現也並未像我們想像的一樣回傳數值型別的表示。

其實真正的理解是這樣的:呼叫物件的toString()方法可以將物件轉換為字串,但是如果要轉換成字串不一定是呼叫toString方法。

我們再看看下面的程式碼。

var obj= { };     
obj.valueOf=function(){ return 1; }
obj.toString=function(){ return 2; }
console.log(obj==1);    //truevar obj2= { };     
obj2.valueOf=function(){ return 2; }
obj2.toString=function(){ return 1; }
console.log(obj2==1);    //false                        
var obj3={ };
obj3.valueOf=function(){ return []; }
obj3.toString=function(){ return 1; }
console.log(obj3==1);    //true
登入後複製

上述程式碼中我們定義了一個物件obj,obj2,定義了valueOf和toString方法的回傳值,透過與1比較相等,發現其優先呼叫了valueOf方法。

接著定義了一個物件obj3,定義了valueOf和toString方法的回傳值,透過與1比較相等,發現其呼叫的是toString方法。

然後我們看下面一段程式碼:

var obj= { };     
obj.valueOf=function(){ return 'a'; }
obj.toString=function(){ return 2; }
console.log(obj=='a');    //truevar obj2= { };     
obj2.valueOf=function(){ return 'b'; }
obj2.toString=function(){ return 'a'; }
console.log(obj2=='a');    //false
登入後複製

上述程式碼2中定義一個物件obj,透過與字串'a'比較發現其呼叫的是valueOf方法。

然後物件obj2與'a'的比較回傳false,發現其並未呼叫toString方法。

由此我們可以得出結論:

物件轉換為簡單型別時會優先呼叫valueOf方法,如果可以與簡單值進行比較則會直接比較,此時不再呼叫toString方法。如果呼叫valueOf方法後無法與簡單值進行比較,則會再呼叫toString方法,最終得到比對的結果。

但是要注意的一點是Date物件不符合上述的規則,Date物件的toString和valueOf方法都是重新定義的,預設會呼叫toString方法。

以上是Javascript中關於雙等號隱性轉換機制的範例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

全角英文字母轉換為半角形式的實用技巧 全角英文字母轉換為半角形式的實用技巧 Mar 26, 2024 am 09:54 AM

全角英文字母轉換為半角形式的實用技巧在現代生活中,我們經常會接觸到英文字母,在使用電腦、手機等設備時也經常需要輸入英文字母。然而,有時候我們會遇到全角英文字母的情況,而我們需要使用的是半角形式。那麼,如何將全角英文字母轉換為半角形式呢?以下就為大家介紹一些實用的技巧。首先,全角英文字母和數字是指在輸入法中佔據一個全角位置的字符,而半角英文字母和數字則是佔據一

建議:優秀JS開源人臉偵測辨識項目 建議:優秀JS開源人臉偵測辨識項目 Apr 03, 2024 am 11:55 AM

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

如何將AI檔案轉換為CDR格式 如何將AI檔案轉換為CDR格式 Feb 19, 2024 pm 04:09 PM

AI檔案指的是AdobeIllustrator(簡稱AI)軟體所建立的向量圖形文件,而CDR檔案指的是CorelDRAW軟體所建立的向量圖形檔。由於這兩個軟體屬於不同的廠商開發,因此它們的文件格式不同,無法直接相互轉換。然而,我們可以透過一些方法將AI檔案轉換為CDR檔案。以下將介紹一種常用的轉換方法。步驟一:匯出AI檔案為EPS格式AdobeIllust

如何將虛擬機器轉換為實體機器? 如何將虛擬機器轉換為實體機器? Feb 19, 2024 am 11:40 AM

將虛擬機器(VM)轉換為實體機器是一種將虛擬實例和關聯的應用軟體遷移到實體硬體平台的過程。這種轉換有助於優化作業系統的效能和硬體資源利用。本文旨在深入探討如何進行這種轉換。如何實現從虛擬機器到實體機器的遷移?通常,虛擬機器與實體機之間的轉換過程由第三方軟體在虛擬機器外部執行。這個過程包括多個階段,涉及虛擬機器的配置和資源轉移。準備實體機器:第一步是確保實體機符合Windows的硬體需求。我們需要在實體機上備份數據,因為轉換過程將覆蓋現有數據。 *管理員帳戶的使用者名稱和密碼,具有建立系統映像的管理員權限。將虛擬

如何在Windows 11/10中將ODT轉換為Word? 如何在Windows 11/10中將ODT轉換為Word? Feb 20, 2024 pm 12:21 PM

在這篇文章中,我們將向您展示如何將OpenDocumentTextDocument(ODT)檔案轉換為MicrosoftWord(Docx、DOC等)。格式。如何在Windows11/10中將ODT轉換為Word以下是您可以在WindowsPC上將ODT文件轉換為DOC或DOCX格式的方法:使用寫字板或Word將ODT轉換為Word我們要向您展示的第一種方法是使用寫字板或MicrosoftWord將ODT轉換為Word。以下是實現這一點的步驟:首先,使用「開始」功能表開啟寫字板應用程式。現在,轉到

Golang時間處理:如何在Golang中將時間戳轉換為字串 Golang時間處理:如何在Golang中將時間戳轉換為字串 Feb 24, 2024 pm 10:42 PM

Golang時間轉換:如何將時間戳轉換為字串在Golang中,時間操作是非常常見的操作之一。有時候我們需要將時間戳記轉換為字串,以便於展示或儲存。本文將介紹如何使用Golang將時間戳轉換為字串,並提供具體的程式碼範例。 1.時間戳和字串的轉換在Golang中,時間戳通常是以整數數字的形式表示的,表示的是從1970年1月1日至當前時間的秒數。而字串則

PHP 月份轉換為英文月份的實作方法詳解 PHP 月份轉換為英文月份的實作方法詳解 Mar 21, 2024 pm 06:45 PM

這篇文章將詳細介紹如何將PHP中的月份轉換為英文月份的方法,同時給出具體的程式碼範例。在PHP開發中,有時候我們需要將數字表示的月份轉換為英文的月份,這在一些日期處理或資料展示的場景下非常實用。以下將從實作原理、具體程式碼範例和注意事項等方面進行詳解。一、實作原理在PHP中,可以透過使用DateTime類別和format方法來實現將數位月份轉換為英文月份。 Date

qq音樂怎麼轉換mp3格式 手機上qq音樂轉mp3格式 qq音樂怎麼轉換mp3格式 手機上qq音樂轉mp3格式 Mar 21, 2024 pm 01:21 PM

qq音樂讓大家盡情享受觀影解悶,每天都可以使用這個軟體,輕鬆滿足自己的使用,優質海量的歌曲,任由大家暢聽,也可以下載保存起來,下次聽的時候,不需要網絡,而在這裡下載的歌曲不是MP3格式的,無法在其他平台使用,會員歌曲過期後也沒有辦法再聽了,所以很多小伙伴們,都想要將歌曲轉換成MP3格式的,在這裡小編為你們提供方法,幫助大家都可以使用起來!  1、開啟電腦qq音樂,點選右上角【主選單】按鈕,點選【音訊轉碼】,選擇【新增歌曲】選項,新增需要轉換的歌曲;  2、新增歌曲完畢,點選選擇轉換為【mp3

See all articles