【问题标题】:ES6 Destructuring assignment without declaration没有声明的 ES6 解构赋值
【发布时间】:2019-07-11 08:43:18
【问题描述】:

以下语法有什么区别?第二个会生成全局变量吗?

// 1. use let or cont
let [a, b] = [1, 2]

// 2. without using let or const 
[a, b] = [1, 2]

提供任何官方参考资料将不胜感激。

【问题讨论】:

标签: javascript ecmascript-6


【解决方案1】:

第一个例子定义了块范围内的变量。

第二个例子定义了全局变量。

【讨论】:

  • 好像不行,chrome和node都试过了,a和b不是全局的
  • @YueGu 这不正确。 {[a, b] = [1, 2]} 将在全局范围内定义 ab console.log(a) // 1{let [a, b] = [1, 2]} 将仅在块范围内定义 ab console.log(a) // Uncaught ReferenceError: a is not defined
  • @YueGu 如果ab 没有以其他方式显式声明,那么在“严格”模式下会出错,但在非严格模式下,变量将是隐式声明的 声明为全局的。
  • 这是我的错,我还假设没有 let 会导致全局变量,但是,我可能做错了检查假设的方法,导致我认为它的行为可能不同。
【解决方案2】:

See the MDN pages.

我假设没有声明类型会导致数组被初始化为 let,基于我正在阅读的 here

let 是块作用域,var 是函数作用域,也许你可以自己检查一下?

【讨论】:

    猜你喜欢
    • 2020-03-15
    • 2016-11-14
    • 2018-05-04
    • 2020-05-19
    • 2021-06-21
    • 1970-01-01
    • 1970-01-01
    • 2017-04-19
    • 1970-01-01
    相关资源
    最近更新 更多