<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 標準對象 在JavaScript的世界里,一切都是對象。 但是某些對象還是和其他對象不太一樣。為了區分對象的類型,我們用`typeof`操作符獲取對象的類型,它總是返回一個字符串: ``` typeof 123; // 'number' typeof NaN; // 'number' typeof 'str'; // 'string' typeof true; // 'boolean' typeof undefined; // 'undefined' typeof Math.abs; // 'function' typeof null; // 'object' typeof []; // 'object' typeof {}; // 'object' ``` 可見,`number`、`string`、`boolean`、`function`和`undefined`有別于其他類型。特別注意`null`的類型是`object`,`Array`的類型也是`object`,如果我們用`typeof`將無法區分出`null`、`Array`和通常意義上的object——`{}`。 ## 包裝對象 除了這些類型外,JavaScript還提供了包裝對象,熟悉Java的小伙伴肯定很清楚`int`和`Integer`這種曖昧關系。 `number`、`boolean`和`string`都有包裝對象。沒錯,在JavaScript中,字符串也區分`string`類型和它的包裝類型。包裝對象用`new`創建: ``` var n = new Number(123); // 123,生成了新的包裝類型 var b = new Boolean(true); // true,生成了新的包裝類型 var s = new String('str'); // 'str',生成了新的包裝類型 ``` 雖然包裝對象看上去和原來的值一模一樣,顯示出來也是一模一樣,但他們的類型已經變為`object`了!所以,包裝對象和原始值用`===`比較會返回`false`: ``` typeof new Number(123); // 'object' new Number(123) === 123; // false typeof new Boolean(true); // 'object' new Boolean(true) === true; // false typeof new String('str'); // 'object' new String('str') === 'str'; // false ``` 所以_閑的蛋疼也不要使用包裝對象_!尤其是針對`string`類型!!! 如果我們在使用`Number`、`Boolean`和`String`時,沒有寫`new`會發生什么情況? 此時,`Number()`、`Boolean`和`String()`被當做普通函數,把任何類型的數據轉換為`number`、`boolean`和`string`類型(注意不是其包裝類型): ``` var n = Number('123'); // 123,相當于parseInt()或parseFloat() typeof n; // 'number' var b = Boolean('true'); // true typeof b; // 'boolean' var b2 = Boolean('false'); // true! 'false'字符串轉換結果為true!因為它是非空字符串! var b3 = Boolean(''); // false var s = String(123.45); // '123.45' typeof s; // 'string' ``` 是不是感覺頭大了?這就是JavaScript特有的催眠魅力! 總結一下,有這么幾條規則需要遵守: * 不要使用`new Number()`、`new Boolean()`、`new String()`創建包裝對象; * 用`parseInt()`或`parseFloat()`來轉換任意類型到`number`; * 用`String()`來轉換任意類型到`string`,或者直接調用某個對象的`toString()`方法; * 通常不必把任意類型轉換為`boolean`再判斷,因為可以直接寫`if (myVar) {...}`; * `typeof`操作符可以判斷出`number`、`boolean`、`string`、`function`和`undefined`; * 判斷`Array`要使用`Array.isArray(arr)`; * 判斷`null`請使用`myVar === null`; * 判斷某個全局變量是否存在用`typeof window.myVar === 'undefined'`; * 函數內部判斷某個變量是否存在用`typeof myVar === 'undefined'`。 最后有細心的同學指出,任何對象都有`toString()`方法嗎?`null`和`undefined`就沒有!確實如此,這兩個特殊值要除外,雖然`null`還偽裝成了`object`類型。 更細心的同學指出,`number`對象調用`toString()`報SyntaxError: ``` 123.toString(); // SyntaxError ``` 遇到這種情況,要特殊處理一下: ``` 123..toString(); // '123', 注意是兩個點! (123).toString(); // '123' ``` 不要問為什么,這就是JavaScript代碼的樂趣!
                  <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>

                              哎呀哎呀视频在线观看