国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

JS隱式轉(zhuǎn)換與類型比較

這篇具有很好參考價值的文章主要介紹了JS隱式轉(zhuǎn)換與類型比較。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

JS隱式轉(zhuǎn)換與類型比較

隱式轉(zhuǎn)換

隱式轉(zhuǎn)換(Implicit Conversion)是指在表達(dá)式求值或操作中自動發(fā)生的類型轉(zhuǎn)換。當(dāng)使用不同的數(shù)據(jù)類型進(jìn)行操作時,JavaScript 會自動進(jìn)行類型轉(zhuǎn)換以滿足操作的要求。

隱式轉(zhuǎn)換在編寫邏輯時經(jīng)常會出現(xiàn),特別是在需要進(jìn)行判斷的邏輯場景中。舉個例子:

// 字符串和數(shù)字
var num = 42;
var str = "The answer is " + num; // 字符串拼接
console.log(str); // 輸出 "The answer is 42"
var result = "3" - "1"; // 數(shù)字運算
console.log(result); // 輸出 2

// 布爾值
if (1) {
console.log("條件為真"); // 1 被隱式轉(zhuǎn)換為 true
}
var bool = !0; // 數(shù)字 0 被隱式轉(zhuǎn)換為 false
console.log(bool); // 輸出 false

需要注意的是,隱式轉(zhuǎn)換雖然可以簡化代碼編寫,但有時也可能導(dǎo)致意外的行為和錯誤。因此,當(dāng)涉及類型轉(zhuǎn)換時,建議使用顯式轉(zhuǎn)換(如 Number()、String()、parseInt() 等)來明確表達(dá)意圖,使代碼更加可讀和可維護(hù)。

類型比較

一、基本數(shù)據(jù)類型的比較(String/Number/Boolean/undefined/null)

  • 第一步,將當(dāng)前的變量值轉(zhuǎn)換為Number類型的值
  • 第二步,將轉(zhuǎn)換后的變量值進(jìn)行比較
'23' == 23; // -> 23 == 23 -> true
'0' == false; // -> 0 == 0 -> true
'0' == undefined; // -> 0 == NaN -> false
'asd' == null; // -> NaN == NaN -> false

需要注意的是,不能轉(zhuǎn)換為數(shù)字的值 / undefined / null最終都會變成NaN,而NaN是不等于任何值的,包括它自己。

二、引用數(shù)據(jù)類型的比較(Object/Array)

此類數(shù)據(jù)類型的比較通常是判斷指針的地址是否指向同一片內(nèi)存空間,如果是的話則會返回true。

const arr = [1, [2, 3], 4];
const copy1 = arr[1];
const copy2 = arr[1];
const copy3 = [2, 3];

copy1 == copy2; // true
copy1 == copy3; // false

三、基本數(shù)據(jù)類型和引用數(shù)據(jù)類型之間的比較

  • 第一步:將引用數(shù)據(jù)類型的數(shù)據(jù)轉(zhuǎn)換
  • 第二步:將轉(zhuǎn)換后的數(shù)據(jù)與基本數(shù)據(jù)類型進(jìn)行比較

在第一步中,會先調(diào)用引用數(shù)據(jù)類型變量的valueOf方法,期待返回一個標(biāo)量,如果沒有返回標(biāo)量,則繼續(xù)執(zhí)行數(shù)據(jù)的toString方法。將執(zhí)行toString方法后得到的返回值與基本數(shù)據(jù)類型變量進(jìn)行比較。

const arr = [1];
arr == 1; // 猜測一下返回什么
// 調(diào)用valueOf方法,期待返回標(biāo)量
arr.valueOf(); // [1]
// 返回的不是標(biāo)量,繼續(xù)執(zhí)行toString方法,獲取返回值
arr.toString(); // '1'

// 最后的比較就變成了如下
// 相當(dāng)于變成了基本數(shù)據(jù)類型的比較
'1' == 1; // -> 1 == 1 -> true

再來深入理解一下

const arr = [0];
arr == false;

arr.valueOf(); // [0]
arr.toString(); // '0'

'0' == false; // -> 0 == 0 -> true 

再使用對象試試

const obj = { a: 1 };
obj == true;

obj.valueOf(); // { a: 1 }
obj.toString(); // '[object Object]'

// 最后的比較變成了如下代碼
'[object Object]' == true; // -> NaN == 1 -> false

當(dāng)然,如果對象返回了標(biāo)量,結(jié)局就不同了。

const obj = {
  a: 1,
  valueOf: () => 32
};
obj == '32';

// 返回了標(biāo)量32,不再執(zhí)行toString方法
obj.valueOf(); // 32

// 最后的比較變成了如下代碼
32 == '32'; // -> 32 == 32 -> true

至此,是不是理解的更深了,領(lǐng)悟了以后面對各種類型判斷都無需緊張了!文章來源地址http://www.zghlxwxcb.cn/news/detail-469346.html

到了這里,關(guān)于JS隱式轉(zhuǎn)換與類型比較的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【C語言】你不知道的隱式類型轉(zhuǎn)換規(guī)則

    ??個人主頁:庫庫的里昂 ??CSDN新晉作者 ??歡迎 ??點贊?評論?收藏 ?系列專欄C語言初階、代碼小游戲 ??希望作者的文章能對你有所幫助,有不足的地方請在評論區(qū)留言指正,大家一起學(xué)習(xí)交流!?? 【前言】 本文接著C語言中的操作符(萬字詳解)講解隱式類型轉(zhuǎn)換規(guī)

    2024年02月14日
    瀏覽(23)
  • 【c++】類和對象(六)深入了解隱式類型轉(zhuǎn)換

    【c++】類和對象(六)深入了解隱式類型轉(zhuǎn)換

    ??個人主頁 : Quitecoder ?? 專欄 : c++筆記倉 朋友們大家好,本篇文章我們來到 初始化列表,隱式類型轉(zhuǎn)換以及explicit的內(nèi)容 在創(chuàng)建對象時,編譯器通過調(diào)用構(gòu)造函數(shù),給對象中各個成員變量一個合適的初始值 雖然上述構(gòu)造函數(shù)調(diào)用之后,對象中已經(jīng)有了一個初始值,但是

    2024年04月13日
    瀏覽(19)
  • Java核心知識點1-java和c++區(qū)別、隱式和顯示類型轉(zhuǎn)換

    Java核心知識點1-java和c++區(qū)別、隱式和顯示類型轉(zhuǎn)換

    java和c++區(qū)別 java通過虛擬機實現(xiàn)跨平臺特性,但c++依賴于特定的平臺。 java沒有指針,它的引用可以理解為安全指針,而c++和c一樣具有指針。 java支持自動垃圾回收,而c++需要手動回收。 java不支持多重繼承,只能通過實現(xiàn)多個接口來達(dá)到相同目的,而c++支持多繼承。 ?隱式(

    2024年02月03日
    瀏覽(19)
  • c++中static靜態(tài)成員變量和靜態(tài)成員函數(shù)、explcit和隱式類型轉(zhuǎn)換、友元函數(shù)()詳解

    聲明為 static 的類成員 稱為 類的靜態(tài)成員 ,用 static 修飾的 成員變量 ,稱之為 靜態(tài)成員變量 ;用 static 修飾 的 成員函數(shù) ,稱之為 靜態(tài)成員函數(shù) 。 靜態(tài)成員變量一定要在類外進(jìn)行初始化 ? 靜態(tài)成員 為 所有類對象所共享 ,不屬于某個具體的對象,存放在靜態(tài)區(qū) ? 靜態(tài)成

    2024年02月04日
    瀏覽(22)
  • 【C語言】表達(dá)式求值相關(guān)問題匯總—>隱式類型轉(zhuǎn)換(整型提升)、算數(shù)轉(zhuǎn)換與操作符優(yōu)先級匯總(收藏查閱)

    【C語言】表達(dá)式求值相關(guān)問題匯總—>隱式類型轉(zhuǎn)換(整型提升)、算數(shù)轉(zhuǎn)換與操作符優(yōu)先級匯總(收藏查閱)

    ??? 樊梓慕: 個人主頁 ? ?? 個人專欄: 《C語言》《數(shù)據(jù)結(jié)構(gòu)》《藍(lán)橋杯試題》 ?? 每一個不曾起舞的日子,都是對生命的辜負(fù)。 目錄 前言: 一、隱式類型轉(zhuǎn)換 (一)整型提升的意義 (二)如何進(jìn)行整型提升呢? 二、算數(shù)轉(zhuǎn)換 三、操作符的屬性 (一)操作符優(yōu)先級匯

    2024年02月16日
    瀏覽(21)
  • 【C++】類和對象④(類的默認(rèn)成員函數(shù):取地址及const取地址重載 | 再談構(gòu)造函數(shù):初始化列表,隱式類型轉(zhuǎn)換,缺省值)

    【C++】類和對象④(類的默認(rèn)成員函數(shù):取地址及const取地址重載 | 再談構(gòu)造函數(shù):初始化列表,隱式類型轉(zhuǎn)換,缺省值)

    ?? 個人主頁: Forcible Bug Maker ?? 專欄: C++ 目錄 前言 取地址及const取地址操作符重載 再談構(gòu)造函數(shù) 初始化列表 隱式類型轉(zhuǎn)換 explicit 成員變量缺省值 結(jié)語 本篇主要內(nèi)容:類的六個默認(rèn)成員函數(shù)中的 取地址 及 const取地址重載 , 構(gòu)造函數(shù) 初始化列表 , 隱式類型轉(zhuǎn)換

    2024年04月26日
    瀏覽(30)
  • JS類型轉(zhuǎn)換

    JS類型轉(zhuǎn)換

    JS中的類型轉(zhuǎn)換方式一般分為三類:轉(zhuǎn)為String型,轉(zhuǎn)為數(shù)字型,轉(zhuǎn)為布爾型。 一.轉(zhuǎn)為String型 1.toString() 通過變量.toString()可以將其他類型的變量轉(zhuǎn)換為字符串型(null和undefined沒有toString()方法) 2.String() 這種方法為強制轉(zhuǎn)換(null和undefined通過這個方法可以成功轉(zhuǎn)換為字符串類

    2024年02月07日
    瀏覽(12)
  • JS基礎(chǔ)-數(shù)據(jù)類型轉(zhuǎn)換

    JS基礎(chǔ)-數(shù)據(jù)類型轉(zhuǎn)換

    JS存在不同的數(shù)據(jù)類型, 這就需要一些方法將不同的數(shù)據(jù)類型做轉(zhuǎn)換。 其他類型的值轉(zhuǎn)換成數(shù)字, 這在工作中很常見。 有以下幾種轉(zhuǎn)換方式 Number 函數(shù) parseInt 函數(shù) parseFloat 函數(shù) Number 函數(shù)可以將 其他類型轉(zhuǎn)成 數(shù)字類型,具體示例如下 字符串轉(zhuǎn)數(shù)字 布爾轉(zhuǎn)數(shù)字 undefined 和 nu

    2024年02月09日
    瀏覽(26)
  • JavaScript基礎(chǔ):js介紹、變量、數(shù)據(jù)類型以及類型轉(zhuǎn)換

    JavaScript基礎(chǔ):js介紹、變量、數(shù)據(jù)類型以及類型轉(zhuǎn)換

    ? 目錄 介紹 引入方式 內(nèi)部方式 外部形式 注釋和結(jié)束符 單行注釋 多行注釋 結(jié)束符 輸入和輸出 輸出 輸入 變量 聲明 賦值 變量名命名規(guī)則 常量 數(shù)據(jù)類型 數(shù)值類型 字符串類型 布爾類型 undefined 類型轉(zhuǎn)換 隱式轉(zhuǎn)換 顯式轉(zhuǎn)換 Number ??引入方式 JavaScript 程序不能獨立運行

    2024年04月27日
    瀏覽(20)
  • Scala 如何調(diào)試隱式轉(zhuǎn)換--隱式轉(zhuǎn)換代碼的顯示展示

    Scala 如何調(diào)試隱式轉(zhuǎn)換--隱式轉(zhuǎn)換代碼的顯示展示

    在需要隱式轉(zhuǎn)換的地方,把需要的參數(shù)顯示的寫出。 在terminal中 利用 scalac -Xprint:typer xxx.scala 方法打印添加了隱式值的代碼示例。 對于復(fù)雜的工程來說,直接跑到terminal執(zhí)行 scalac -Xprint:typer xxx.scala 會報很多庫不存在的錯誤。 可在idea的設(shè)置中,找到如下配置,寫入 -Xprint:ty

    2024年02月12日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包