<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之旅 廣告
                [TOC] # 簡介 **基本類型**(基本數值、基本數據類型)是一種既非對象也無方法的數據。在 JavaScript 中,共有6種基本類型:string,number,boolean,null,undefined,symbol (ECMAScript 2015新增)。 多數情況下,基本類型直接代表了最底層的語言實現。 所有基本類型的值都是**不可改變**的。但需要注意的是,基本類型本身和一個賦值為基本類型的變量的區別。變量會被賦予一個新值,而原值不能像數組、對象以及函數那樣被改變。 <br> <br> # 例1 ``` // 使用字符串方法不會改變一個字符串 var bar = "baz"; console.log(bar); // baz bar.toUpperCase(); console.log(bar); // baz // 使用數組方法可以改變一個數組 var foo = []; console.log(foo); // [] foo.push("plugh"); console.log(foo); // ["plugh"] // 賦值行為可以給基本類型一個新值,而不是改變它 bar = bar.toUpperCase(); // BAZ ``` <br> <br> # 例2 ``` // 基本類型 let foo = 5; // 定義一個貌似可以改變基本類型值的函數 function addTwo(num) { num += 2; } // 和前面的函數一樣 function addTwo_v2(foo) { foo += 2; } // 調用第一個函數,并傳入基本類型值作為參數 addTwo(foo); // Getting the current Primitive value console.log(foo); // 5 // 嘗試調用第二個函數... addTwo_v2(foo); console.log(foo); // 5 ``` * `addTwo`和`addTwo_v2`函數調用時,JavaScript會檢查標識符`foo`的值,從而準確無誤的找到第一行實例化變量的聲明語句。 * 找到以后,JavaScript將其作為參數傳遞給函數的形參。 * 在執行函數體內語句之前,**JavaScript會將傳遞進來的參數(基本類型的值)復制一份**,創建一個本地副本。這個副本只存在于該函數的作用域中,我們能夠通過指定在函數中的標識符訪問到它(`addTwo`中的`num`,`addTwo_v2`中的`foo`)。 * 接下來,函數體中的語句開始執行: * 第一個函數中,創建了本地`num`參數,`num`的值加2,但這個值并不是原來的`foo`的值。 * 第二個函數中,創建了本地參數`foo`,并將它的值加2,這個值不是外部foo的值。在這種情況下,外部的`foo`變量不能以**任何**方式被訪問到。這是因為JavaScript的詞法作用域(lexical scoping)所導致的變量覆蓋,本地的變量`foo`覆蓋了外部的變量`foo`。欲知詳情,請參閱[閉包](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Closures)。 * 綜上所述,函數中的任何操作都**不會**影響到最初的`foo`,我們操作的只不過是它的**副本**。
                  <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>

                              哎呀哎呀视频在线观看