首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数中的数组解构使用"let是未定义的“会失败吗?

问函数中的数组解构使用"let是未定义的“会失败吗?
EN

Stack Overflow用户
提问于 2015-12-06 00:32:59
回答 1查看 1.1K关注 0票数 1

我想在函数中构造一个数组。

下面的示例将数组作为单个参数传递,然后尝试在函数中对参数进行重构。看起来很简单,但是节点抛出了一个错误。

代码语言:javascript
复制
// volume.js
function volume(box) {
  let [x,y,z] = box;
  return x * y * z;
}

volume([2,3,4]);

使用$ node volume.js (v5.1.1)运行此错误将返回以下错误:

代码语言:javascript
复制
./volume.js:2
  let [x,y,z] = box;
  ^

ReferenceError: let is not defined
    at volume (./volume.js:2:3)
    at Object.<anonymous> (./volume.js:5:1)
    at Module._compile (module.js:425:26)
    at Object.Module._extensions..js (module.js:432:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:313:12)
    at Function.Module.runMain (module.js:457:10)
    at startup (node.js:138:18)
    at node.js:974:3

有其他方法可以解决这个问题,但我不明白为什么上面的例子不起作用。为什么这会导致错误?let怎么可能是未定义的?

EN

回答 1

Stack Overflow用户

发布于 2015-12-06 06:17:08

析构不适用于香草节点v5.1.x,因为析构仍然被认为是“进行中”的特性。

引发let is not defined ReferenceError是因为块作用域声明当前是仅限于严格模式。

因此,要使上述代码工作,需要使用harmony_destructuring标志调用节点,并且代码需要在严格模式下运行。将"use strict"添加到文件的顶部,并运行以下命令:

代码语言:javascript
复制
$ node --harmony_destructuring ./volume.js

节点还提供了一个--use_strict标志,但我更愿意声明每个文件。

node.js文档 (如@Shashank在评论中所引用的当前5.1.1版)、ES6/ES6 2015功能分为三类:

  • 船运-默认启用
  • 推出了--几乎准备好了,可以批量使用--harmony标志。
  • In -实验性的,可以单独启用

使用协调标志运行节点,node --harmony只启用分阶段功能。在过程中,需要单独启用像析构这样的功能。以下是节点v.5.1.1中正在进行的标志的列表:

  • --harmony_modules -和谐模块
  • --harmony_regexps -和谐正则表达式扩展
  • --harmony_proxies -和谐代理
  • --harmony_sloppy_function -和谐的软性函数块作用域
  • --harmony_sloppy_let -和谐进入草率模式
  • --harmony_unicode_regexps -和谐的unicode正则表达式
  • --harmony_reflect -和谐反映API
  • --harmony_destructuring -和谐破坏
  • --harmony_default_parameters -和谐默认参数
  • --harmony_sharedarraybuffer -和谐共享缓冲区
  • --harmony_atomics -和谐原子
  • --harmony_simd -和谐simd
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34112606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档