ES6 let、const、頂層變量和全局變量的區別


在ES6規范中,增加了塊作用域,學過java的很容易理解,就是這個變量只能在這個作用域中行使,除了這個作用域,就不能使用  在ES6中增加了let、const,本質區別了var,function,后者是全局變量,前者是塊作用域變量。

ES6重新解釋了頂層和全局的概念,在頂層中如window和globe屬於頂層,而在let,const,class則是全局變量,和頂層有本質的區別!

var a = 1; // 如果在Node的REPL環境,可以寫成global.a // 或者采用通用方法,寫成this.a window.a // 1 let b = 1; window.b // undefined


yield 函數:代碼執行到yield,等待回調函數執行完,繼續執行代碼!

ES6中解構函數會自動把大括號看成一個塊,如果想把塊連偉一個整體使用,必須使用小括號包含起來。
如:
let foo; let {foo} = {foo: 1}; // SyntaxError: Duplicate declaration "foo" let baz; let {bar: baz} = {bar: 1}; // SyntaxError: Duplicate declaration "baz"


let foo; ({foo} = {foo: 1}); // 成功 let baz; ({bar: baz} = {bar: 1}); // 成功

let obj = {}; let arr = []; ({ foo: obj.prop, bar: arr[0] } = { foo: 123, bar: true }); obj // {prop:123} arr // [true]


var {x = 3} = {}; x // 3 var {x, y = 5} = {x: 1}; x // 1 y // 5 var {x:y = 3} = {}; y // 3 var {x:y = 3} = {x: 5}; y // 5 var { message: msg = 'Something went wrong' } = {}; msg // "Something went wrong"

js會將在行首的大括號看做成是一個代碼塊!
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM