在将这段代码保存到文本文件并在命令行中使用节点运行时,我遇到了问题。
let x;
{k1: x = null } = {k1: "Hello"};
console.log(x);
运行此操作会在赋值运算符无效时抛出错误。
但是,当代码直接输入到节点解释器中时,它会打印出"Hello"
,这是我所期待的。
任何人都知道这可能是什么?我们的想法是使用默认值构造一个类,并使用相同的方法更新类,在缺少某些内容时重用当前值。
答案 0 :(得分:1)
您必须使用assignment wihout declaration
let x;
({k1: x = null } = {k1: "Hello"});
或只是:
let { k1: x = null } = { k1: "Hello" };
需要围绕赋值语句的圆括号(...) 使用没有的对象文字解构赋值时的语法 声明。
{a,b} = {a:1,b:2}不是有效的独立语法,因为{a,b} 在左侧被视为块而不是对象字面。
然而,({a,b} = {a:1,b:2})是有效的,因为var {a,b} = {a:1, b:2}
注意:您的(...)表达式需要以分号或分号开头 它可以用于在前一行执行函数。