<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 一、概述 JavaScript 是一種動態類型語言,變量沒有類型限制,可以隨時賦予任意值。 ~~~ var x = y ? 1 : 'a'; ~~~ 上面代碼中,變量`x`到底是數值還是字符串,取決于另一個變量`y`的值。`y`為`true`時,`x`是一個數值;`y`為`false`時,`x`是一個字符串。這意味著,`x`的類型沒法在編譯階段就知道,必須等到運行時才能知道。 雖然變量的數據類型是不確定的,但是各種運算符對數據類型是有要求的。如果運算符發現,運算子的類型與預期不符,就會自動轉換類型。比如,減法運算符預期左右兩側的運算子應該是數值,如果不是,就會自動將它們轉為數值。 ~~~ '4' - '3' // 1 ~~~ ## 二、強制轉換 強制轉換主要指使用`Number()`、`String()`和`Boolean()`三個函數,手動將各種類型的值,分別轉換成數字、字符串或者布爾值。 ### 2.1 Number() 使用`Number`函數,可以將任意類型的值轉化成數值。 * 原始類型值的轉換規則如下 ~~~ // 數值:轉換后還是原來的值 Number(324) // 324 // 字符串:如果可以被解析為數值,則轉換為相應的數值 Number('324') // 324 // 字符串:如果不可以被解析為數值,返回 NaN Number('324abc') // NaN // 空字符串轉為0 Number('') // 0 // 布爾值:true 轉成 1,false 轉成 0 Number(true) // 1 Number(false) // 0 // undefined:轉成 NaN Number(undefined) // NaN // null:轉成0 Number(null) // 0 ~~~ * `Number`方法的參數是對象時,將返回`NaN`,除非是包含單個數值的數組。 ~~~ Number({a: 1}) // NaN Number([1, 2, 3]) // NaN Number([5]) // 5 ~~~ ### 2.2 String() `String`函數可以將任意類型的值轉化成字符串,轉換規則如下。 1. 原始類型值 **數值**:轉為相應的字符串。 **字符串**:轉換后還是原來的值。 **布爾值**:`true`轉為字符串`"true"`,`false`轉為字符串`"false"`。 **undefined**:轉為字符串`"undefined"`。 **null**:轉為字符串`"null"`。 2. 對象 `String`方法的參數如果是對象,返回一個類型字符串;如果是數組,返回該數組的字符串形式。 ~~~ String({a: 1}) // "[object Object]" String([1, 2, 3]) // "1,2,3" ~~~ ### 2.3 Boolean() `Boolean()`函數可以將任意類型的值轉為布爾值。它的轉換規則相對簡單:除了以下五個值的轉換結果為`false`,其他的值全部為`true`。 * `undefined` * `null` * `0`(包含`-0`和`+0`) * `NaN` * `''`(空字符串) ~~~ Boolean(undefined) // false Boolean(null) // false Boolean(0) // false Boolean(NaN) // false Boolean('') // false ~~~ ## 三、自動轉換 遇到以下三種情況時,JavaScript 會自動轉換數據類型,即轉換是自動完成的,用戶不可見。 * 第一種情況,不同類型的數據互相運算。 ~~~ 123 + 'abc' // "123abc" ~~~ * 第二種情況,對非布爾值類型的數據求布爾值。 ~~~ if ('abc') { console.log('hello') } // "hello" ~~~ * 第三種情況,對非數值類型的值使用一元運算符(即`+`和`-`)。 ~~~ + {foo: 'bar'} // NaN - [1, 2, 3] // NaN ~~~ 自動轉換的規則是這樣的:預期什么類型的值,就調用該類型的轉換函數。比如,某個位置預期為字符串,就調用`String`函數進行轉換。如果該位置即可以是字符串,也可能是數值,那么默認轉為數值。 ### 3.1自動轉換為布爾值 除了以下五個值,其他都是自動轉為`true`。 * `undefined` * `null` * `+0`或`-0` * `NaN` * `''`(空字符串) ~~~ if (!undefined && !null && !0 && !NaN && !'') { console.log('true'); } // true ~~~ ### 3.2 自動轉換為字符串 JavaScript 遇到預期為字符串的地方,就會將非字符串的值自動轉為字符串。具體規則是,先將復合類型的值轉為原始類型的值,再將原始類型的值轉為字符串。 ~~~ '5' + 1 // '51' '5' + true // "5true" '5' + false // "5false" '5' + {} // "5[object Object]" '5' + [] // "5" '5' + function (){} // "5function (){}" '5' + undefined // "5undefined" '5' + null // "5null" ~~~ ### 3.3 自動轉換為數值 JavaScript 遇到預期為數值的地方,就會將參數值自動轉換為數值。系統內部會自動調用`Number`函數。 ~~~ '5' - '2' // 3 '5' * '2' // 10 true - 1 // 0 false - 1 // -1 '1' - 1 // 0 '5' * [] // 0 false / '5' // 0 'abc' - 1 ? // NaN null + 1 // 1 undefined + 1 // NaN ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看