<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之旅 廣告
                # Let命令 ## 定義Let變量 在ES6中引入了let命令,通過let命令定義的變量只能在let命令所在的代碼塊內部被引用。 ```javascript "use strict" { let hello = "Hello World!" } console.log(hello) //會報錯,因為沒有全局的hello變量被定義 ``` 從上面的例子可以看出,使用Let命令定義的變量不會自動被提升為全局變量。相反的情況,如果在上面的例子中,你使用var來定義hello這個變量,那么hello這個變量將自動被提升為全局變量,就可以被后面的console.log訪問了。 ## 變量死區 ES6中規定,如果你在一個代碼區塊中使用了let命令來定義變量,那么在變量被定義之前,不允許對這個變量的訪問存在。因此在let命令之前的所有代碼被稱為變量死區。如果在變量死區發生了對變量的引用,那么JavaScript引擎將報錯。 ```javascript "use strict" { console.log(hello); //將報錯,因為變量聲明在之后 let hello = "Hello World!"; } #正確代碼 { let hello = "Hello World!"; console.log(hello); } ``` ## 不能重復聲明變量 在同一個代碼區塊中,你不能使用let/var命令重復定義一個已經已經存在的變量。因此下面的代碼將報錯。 ```javascript "use strict" { let hello = "Hello World!"; let hello = "Hello Not World!";//報錯 console.log(hello); } { let hello = "Hello World!"; var hello = "Hello Not World!";//報錯 console.log(hello); } ``` ## 塊級作用域 ES6引入let命令的一個副作用就是引入了塊級作用域。讓我們來看一個具體的例子來詳細分析塊級作用域。 ```javascript function f() { console.log('I am outside!'); } (function () { if(false) { // 重復聲明一次函數f function f() { console.log('I am inside!'); } } f(); }()); ``` 在ES5環境中,這段代碼將輸出"I am inside!",這個是因為在ES5中,不管代碼塊是否被運行,函數定義都將自動被提升到外部(全局空間)。但是如果在ES6中運行,你將看到輸出"I am outside!",這個是因為重復的function定義是在另外一個不被執行的代碼塊中。實際上在ES6中,上面的代碼被翻譯成了下面的ES5代碼。 ```javascript "use strict"; function sayHello() { console.log("say hello from global"); } (function () { if (false) { var _sayHello = function _sayHello() { console.log("say hello from inside"); }; } sayHello(); })(); ``` 塊級作用域的另外一個影響就是把變量綁定到了當前的作用域 ```javascript "use strict"; function hello() { let word = "hello world!"; if (false) { let word = "hello world1!"; } console.log(word); } hello();//will see "Hello World!" ``` # const命令 const命令和let命令唯一的區別在于constant命令定義的是一個常量。因此使用constant命令定義的常量必須在定義的同時被初始化。 # 引入其他js文件中定義的變量/常量 在ES6中,可以使用import語句來引入其他文件中定義的常量 / 變量。 ```javascript "use strict" //定義在constants.js的常量 export const HELLO = "hello" //在其他js中 import * as constants from "./constants.js" console.log(constants.HELLO) import {HELLO as myHello} from "./constants.js" console.log(myHello) ``` # 全局變量的屬性 在ES6中,使用var定義的變量將是全局變量的屬性(window --- 在browser中 or global--在server段代碼中 ),因此可以通過window.<var_name>或者global.<var_name>來訪問。但是在頂層代碼中使用let / constant定義的變量/常量將不是全局變量的屬性。
                  <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>

                              哎呀哎呀视频在线观看