gpt4 book ai didi

javascript - 在函数中解构数组失败并显示 "let is not defined"?

转载 作者:太空宇宙 更新时间:2023-11-04 00:47:21 24 4
gpt4 key购买 nike

我想在函数内解构数组。

以下示例将数组作为单个参数传递,然后尝试在函数内解构该参数。看起来很简单,但是 Node 会抛出错误。

// volume.js
function volume(box) {
let [x,y,z] = box;
return x * y * z;
}

volume([2,3,4]);

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

./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未定义?

最佳答案

解构不适用于普通 Node v5.1.x,因为解构仍被视为“正在进行中”的功能。

let 未定义 引发 ReferenceError,因为 block 作用域声明当前为 limited to strict mode

因此,要使上述代码正常工作,需要使用“harmony_destructuring”标志调用 Node ,并且代码需要在严格模式下运行。将 "use strict" 添加到文件顶部并运行:

$ node --harmony_destructuring ./volume.js

Node 还提供了一个 --use_strict 标志,但我更喜欢在每个文件中声明它。

node.js documentation (当前从 v5.1.1 开始,@Shashank 在评论中引用),ES6/ES2015 功能分为三类:

  • 送货 - 默认启用
  • 暂存 - 几乎准备就绪,使用 --harmony 标志批量启用。
  • 进行中 - 实验性的,可以单独启用

使用 Harmony 标志运行 Node ,node --harmony 仅启用暂存功能。需要单独启用诸如解构之类的正在进行中的功能。以下是 Node v.5.1.1 中正在进行的标志列表:

  • --harmony_modules - 和谐模块
  • --harmony_regexps - 和谐正则表达式扩展
  • --harmony_proxies - 和谐代理
  • --harmony_sloppy_function - 和谐马虎函数 block 作用域
  • --harmony_sloppy_let - 草率模式下的 Harmony Let
  • --harmony_unicode_regexps - 和谐 unicode 正则表达式
  • --harmony_reflect - Harmony Reflect API
  • --harmony_destructuring - 和谐解构
  • --harmony_default_parameters - 和谐默认参数
  • --harmony_sharedarraybuffer - 和谐sharedarraybuffer
  • --harmony_atomics - 和谐原子
  • --harmony_simd - 和谐 simd

关于javascript - 在函数中解构数组失败并显示 "let is not defined"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34112606/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com