Ven*_*t.R 0 javascript ecmascript-6
Spread Operator抛出float和boolean变量的错误.在float和boolean变量上获取错误是否有任何特定原因.
// Works, Array Variable
'use strict';
let aVal = [1, 2, 3];
console.log(...aVal);
// Works, String Variable
'use strict';
let sVal = 'String';
console.log(...sVal);
// throws error, Integer Variable
'use strict';
let iVal = 1234567890;
console.log(...iVal);
// throws error, Float Variable
'use strict';
let fVal = 99.45;
console.log(...fVal);
// throws error, Boolean Variable
'use strict';
let bVal = true;
console.log(...bVal);
Run Code Online (Sandbox Code Playgroud)
在float和boolean变量上获取错误是否有任何特定原因.
是:传播语法(它不是运算符)仅适用于可迭代对象(实现迭代的对象).数字和布尔值不可迭代.数组,地图和集合之类的东西是可迭代的.
console.log(...aVal);要求JavaScript引擎迭代aVal,然后console.log使用每个迭代值作为离散参数调用.也就是说,它要求javaScript"展开"可迭代的东西.
这是使用iterable传播的示例(在本例中为数组):
function foo(a, b, c, d) {
console.log(a);
console.log(b);
console.log(c);
console.log(d);
}
let a = ["the", "answer", "is", 42];
foo(...a);Run Code Online (Sandbox Code Playgroud)
请注意条目如何a"展开"为离散(单独)参数foo.
以下示例来自较早时您的问题是错误地询问"其余操作员".只是为了完整性:
以下是函数签名中的rest语法(也不是运算符)的示例:
function foo(...args) {
console.log(`I got ${args.length} args`);
}
foo('a', 'b', 'c');Run Code Online (Sandbox Code Playgroud)
...和解构赋值中的rest语法:
let a = ['a', 'b', 'c', 'd', 'e'];
let [ x, y, ...z ] = a;
console.log(x);
console.log(y);
console.log(z);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
599 次 |
| 最近记录: |