最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript強制類型轉(zhuǎn)換(隱式轉(zhuǎn)換)示例代碼

 更新時間:2025年08月27日 08:34:48   作者:W-欣  
轉(zhuǎn)換為字符串是應(yīng)用程序中的常見操作,幾乎所有語言都提供了將任何類型轉(zhuǎn)換為字符串的通用接口,這篇文章主要介紹了JavaScript強制類型轉(zhuǎn)換(隱式轉(zhuǎn)換)的相關(guān)資料,需要的朋友可以參考下

一、核心轉(zhuǎn)換規(guī)則

  • 轉(zhuǎn)數(shù)字(Number)

    • null → 0

    • undefined → NaN

    • true → 1,false → 0

    • 字符串:空串 "" → 0,非數(shù)字字符串(如 "abc")→ NaN

    • 對象:先調(diào)用 valueOf() 或 toString() 得到原始值,再轉(zhuǎn)換

  • 轉(zhuǎn)字符串(String)

    • 數(shù)組 → 逗號分隔的字符串(如 [1,2] → "1,2"

    • 對象 → "[object Object]"

    • null → "null"undefined → "undefined"

  • 轉(zhuǎn)布爾值(Boolean)

    • Falsy 值(自動轉(zhuǎn) false):0、""、null、undefinedNaNfalse

    • Truthy 值(自動轉(zhuǎn) true):其他所有值(包括 []、{}"0"

二、常見隱式轉(zhuǎn)換場景

1. 算術(shù)運算符(+ - * /)

  • + 運算符

    • 若任一操作數(shù)為字符串,執(zhí)行字符串拼接:

      "3" + 4;        // "34"(數(shù)字轉(zhuǎn)字符串)
      [] + {};        // "[object Object]"([] 轉(zhuǎn) "",{} 轉(zhuǎn) "[object Object]")
    • 否則嘗試轉(zhuǎn)數(shù)字:

      true + 1;       // 2(true → 1)
      null + 1;       // 1(null → 0)
  • 其他算術(shù)運算符(- * /:強制轉(zhuǎn)數(shù)字:

    "5" - 2;    // 3
    "10" / "2"; // 5
    "abc" - 1;  // NaN

2. 比較運算符( != > <)

  • == 的寬松相等(按優(yōu)先級轉(zhuǎn)換類型):

    1 == "1";     // true(字符串轉(zhuǎn)數(shù)字)
    true == 1;    // true(布爾轉(zhuǎn)數(shù)字)
    [] == 0;      // true([] → "" → 0)
    [null] == 0;  // true([null] → "" → 0)
    {} == "[object Object]"; // true(對象轉(zhuǎn)字符串)

    特殊規(guī)則

    • null == undefined 為 true(不轉(zhuǎn)換)

    • NaN 與任何值(包括自身)比較均為 false

  • > < 比較:優(yōu)先轉(zhuǎn)數(shù)字:

    "10" > 2;    // true("10" → 10)
    "abc" > 1;   // false("abc" → NaN,比較返回 false)

3. 邏輯運算符(if && ||)

  • 條件判斷:自動轉(zhuǎn)布爾值:

    if ("hello") { ... }  // true(非空字符串)
    if (0) { ... }        // false
  • || 和 &&:返回原值(非布爾值):

    "foo" || "bar";  // "foo"(truthy 返回第一個值)
    0 || "default";  // "default"(falsy 返回第二個值)

4. 對象參與的轉(zhuǎn)換

  • 對象先調(diào)用 valueOf()(默認(rèn)返回對象自身),再調(diào)用 toString()

    [] + 1;          // "1"([] → "" → 字符串拼接)
    {} + [];         // 0({} 被解析為空代碼塊,實際計算 +[] → 0)

三、避免陷阱的實踐建議

  • 使用 === 和 !==:嚴(yán)格相等避免隱式轉(zhuǎn)換:

    "1" === 1;    // false
    undefined === null; // false
  • 顯式轉(zhuǎn)換:主動控制類型:

    Number("123");  // 123(顯式轉(zhuǎn)數(shù)字)
    String(123);    // "123"(顯式轉(zhuǎn)字符串)
    Boolean([]);    // true
  • 注意特殊值

    isNaN(+"abc");  // true(檢測 NaN)
    Object.is(NaN, NaN); // true(ES6 精準(zhǔn)比較)

經(jīng)典面試題

console.log([] == ![]); // true
// 解析:
// 1. ![] → false([] 是 truthy,取反為 false)
// 2. [] == false → [] == 0 → "" == 0 → 0 == 0 → true

console.log({} + []); // "[object Object]"
// 解析:{} 和 [] 均轉(zhuǎn)字符串后拼接

如何是 a==1 && a==2 &&a==3為true

let a = {
    i:1,
    // valueOf:function(){
    //   return this.i++;
    // }
    toString:function(){
      return this.i++;
    }
  }
  if(a ==1 && a == 2 && a == 3){
    console.log('您好!');
  }

以下寫法會報錯

let obj = {
        name:"Rahul",
        valueOf:function(){
            return this;
        },
        toString:function(){
            return this;
        }
       }
       console.log(1 + obj);

總結(jié) 

到此這篇關(guān)于JavaScript強制類型轉(zhuǎn)換(隱式轉(zhuǎn)換)的文章就介紹到這了,更多相關(guān)js強制類型轉(zhuǎn)換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

乐东| 清原| 桃源县| 望城县| 高邮市| 清水县| 万山特区| 新乡市| 乐业县| 文登市| 敦煌市| 刚察县| 福安市| 伊春市| 宿松县| 娄烦县| 新昌县| 惠水县| 青州市| 巴东县| 壤塘县| 上林县| 苏尼特右旗| 车险| 清原| 牟定县| 鱼台县| 华蓥市| 泗水县| 榆树市| 利津县| 丹棱县| 东至县| 安阳市| 宜宾县| 曲麻莱县| 方正县| 左云县| 隆安县| 通河县| 科技|