gpt4 book ai didi

javascript - 为什么这个片段在 Node repl 中不起作用?

转载 作者:行者123 更新时间:2023-11-30 11:38:26 24 4
gpt4 key购买 nike

我刚开始玩 ES6 和 Node,在 Node repl 中试验新特性:

{
const str = 'Alice';
let arr = [];

for (let c of str) {
arr.push(c);
}

arr;
}

抛出的错误:

const str = 'Alice';
^^^
SyntaxError: Unexpected identifier

arr;
ReferenceError: arr is not defined

我无法弄清楚我做错了什么(认为 block 语句可能不会那样工作),所以我转向 Chrome 控制台进行确认。该片段工作正常。那么为什么它在 Node repl (v7.8.0) 中不起作用?

最佳答案

嗯,问题在于您如何在 {...} 中定义您的代码。它应该按预期工作,正如您所说的那样,它可以在 chrome 的开发控制台中工作。 (请注意,您对 destructuring assignment 的使用有些不寻常,但是......很高兴知道为什么它在 repl 中不起作用!)

显然,当您使用结束花括号 } 时,repl 会停止创建,从而执行 {} 中定义的内容.让我们在 repl 中逐步添加您的代码,当您添加 for 循环的 } 时,您将收到错误消息:

> {
... const str = 'Alice';
... let arr = [];
... for (let c of str) {
..... arr.push(c);
..... }
const str = 'Alice';
^^^
SyntaxError: Unexpected identifier

所以解析器接收到的代码是

{
const str = 'Alice';
let arr = [];

for (let c of str) {
arr.push(c);
}

这当然是不正确的。如果你稍微重写一下代码,在范围内没有结束 },那么它就可以工作了!试试这段代码

{
const str = 'Alice';
let arr = [];
for (let c of str) arr.push(c);
arr;
}

图片:

enter image description here

这行得通。问题可能在于 Node repl 如何处理 {} 内容。

更新

我很感兴趣,所以进一步检查了这一点。问题是,一旦您在放置 } 字符后按下,repl 就会开始计算您的语句。我已经检查过了,如果您执行以下操作:

{
const a = 'Alice';
let arr = [];
for (let c of a) {
arr.push(c);
} arr; }

请注意在一行中使用两个。你会得到答案;

> {
... const a = 'Alice';
... let arr = [];
... for (let c of a) {
..... arr.push(c);
..... } arr; }
[ 'A', 'l', 'i', 'c', 'e' ]

恭喜。您在 Node repl 中发现了一个错误。

关于javascript - 为什么这个片段在 Node repl 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43538472/

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