ES6笔记 -- 变量/语句声明
生活随笔
收集整理的這篇文章主要介紹了
ES6笔记 -- 变量/语句声明
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
關于變量聲明
- let的作用是聲明一個作用域為某個代碼塊({})的變量(稱為塊級作用域)
- let不允許變量提升(注: 變量的使用在聲明之前)
- 塊級作用域里的let命令之前的區域稱之為'暫時性死區', 這意味著死區內即使是typeof操作也會出錯
- let不允許在相同的作用域內重復聲明同一個變量, 值得一提的是, for循環語句的循環體是獨立的子作用域, 而循環語句部分(括號內語句)是其父作用域, 這意味著循環語句和循環體內可以定義相同名稱的變量
關于函數聲明
function f () { console.log('outside') }(function () {if (false) { function f () { console.log('inside') } }f() // inside }())- ES5 中的函數聲明只允許在全局或函數作用域內, 但是瀏覽器為了兼容舊代碼, 允許在猶如if的代碼塊內聲明, 此時, 函數將會被提升到函數頭部, 相當于
- 而在 ES6 中則相當于(暫時不提原因)
- 要想 ES6 在塊作用域內聲明函數需使用let聲明函數表達式, 如
關于常量聲明
- 使用const命令聲明一個只讀的常量, 一旦聲明, 常量的值就不能改變
- 由于常量不能改變, 所以在聲明時必須初始化
- const命令也存在塊級作用域
- const命令聲明的常量也存在暫時性死區
- const命令聲明的常量同樣不能重復聲明
- 聲明對象/數組常量時, 需要注意的是, 對象的指針地址不能改變(即該常量不能指向新的對象), 但是其對象本身是可以改變的, 如添加和刪除屬性,如果要將對象凍結, 則使用Object.freeze方法, 對象本身和屬性都被凍結
頂層對象與全局變量
- 瀏覽器環境下, 頂層對象是window, node 中頂層對象是global對象.
- ES5 中, 頂層對象和全局變量是等價的, 這種情況下, 會出現很多問題, 比如頂層對象的屬性導出可以讀寫, 這不利于模塊化編程.
- ES6 規定 let, const, class命令聲明的全局變量不再等于頂層對象
- ES5 頂層對象還存在一個問題, 由于各種環境中(瀏覽器, Web Woker, Node等)的頂層對象不統一, 而使用this變量又存在局限性(如Node和ES6模塊中, this返回的是當前模塊), 在想取得頂層對象時需要添加判斷條件(這里不贅述)
轉載于:https://www.cnblogs.com/xvvx/p/10273986.html
總結
以上是生活随笔為你收集整理的ES6笔记 -- 变量/语句声明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA执行过程sql,SQL 执行过程
- 下一篇: discuz x2.5 mysql_Di