我今天注意到NaN当你输入{}+{}控制台时,Chrome 49不再输出.而是输出字符串[object Object][object Object].
为什么是这样?语言有变化吗?
这有效:
const { foo, bar } = someFunc();
Run Code Online (Sandbox Code Playgroud)
这样做:
let { foo, bar } = someFunc();
Run Code Online (Sandbox Code Playgroud)
但是如果我试图将结构化为已经声明的变量......
let foo = 0;
let bar = 0;
{ foo, bar } = someFunc();
Run Code Online (Sandbox Code Playgroud)
然后:
未捕获的SyntaxError:意外的令牌=
这是设计的吗?除了声明临时对象接收值之外,还有其他解决方法吗?我在switch/case语句中这样做; foo和bar在顶部声明并在切换后使用.到目前为止,我只能这样做:
const temp = someFunc();
foo = temp.foo;
bar = temp.bar;
Run Code Online (Sandbox Code Playgroud) 有人可以解释我为什么
const getabc = ()=> ({a:'aa',b:'bb',c:123});
let a, b, c;
{ a, b, c } = {...getabc()}Run Code Online (Sandbox Code Playgroud)
这很有效
和
const getabc = ()=> ({a:'aa',b:'bb',c:123});
let a, b, c;
{ a, b, c } = {...getabc()};Run Code Online (Sandbox Code Playgroud)
这不(注意末尾的分号)
此代码在google chrome 控制台中完美执行:
{ a, b } = { a: 10, b: 20 }
Run Code Online (Sandbox Code Playgroud)
{a: 10, b: 20}
但是当我在最后添加分号时,出现语法错误:
{ a, b } = { a: 10, b: 20 };
Run Code Online (Sandbox Code Playgroud)
VM115:1 未捕获的语法错误:意外标记“=”
有人能告诉我为什么吗?AFAIK;不应该影响 javascript 中的含义,但显然它在 google chrome 控制台中会影响。
PS 请注意,此行为仅在 Google Chrome 控制台中观察到。