我在CodeReview上看到过这种模式: https://codereview.stackexchange.com/questions/144954/generate-a-table-with-random-numbers
最后一个函数“shuffeledArray”。
以下代码用于在一次操作中为数组分配多个值:
var demo = [];
[demo[0], demo[1], demo[2]] = [2, 4, 8];
console.log(demo);
有效。
但我问自己:
应该使用这些技术吗?还是有缺点?
答案 0 :(得分:2)
这只是一个有用功能的一个不好的例子:解构分配。
一个更好的例子使得解构分配的有用性更加明显。考虑函数需要返回多个返回值的情况。通常,我们返回一个对象或一个数组。通过解构赋值,我们可以使用单个变量来消耗该返回值:
作为对象:
function minMax(a) {
let min = a[0], max = a[0];
a.forEach(entry => {
if (min > entry) {
min = entry;
}
if (max < entry) {
max = entry;
}
});
return {min, max};
}
let {min, max} = minMax([2, 4, 8]);
console.log(min, max);
&#13;
作为阵列:
function minMax(a) {
let min = a[0], max = a[0];
a.forEach(entry => {
if (min > entry) {
min = entry;
}
if (max < entry) {
max = entry;
}
});
return [min, max];
}
let [min, max] = minMax([2, 4, 8]);
console.log(min, max);
&#13;
使用对象进行解构特别有用,例如,在处理模块时。假设一个模块导出了大量的东西,你只需要foo
和bar
:
import {foo, bar} from "./module";
关于不使用它的浏览器支持参数:那是转换的内容。我非常高兴地在浏览器项目中使用ES2015,直到IE9已经超过两年了(是的,在规范最终确定之前),这要归功于转换。
答案 1 :(得分:1)
语法为ES6
并且完全有效,为了使其与现有浏览器兼容,您可能需要使用babel或tracer来编译ES6 code to ES5 code to run in browser.
var [a, b] = [1, 2];
console.log(a, b);
上述代码分别对a和b分配1和2是有效的。
var [a, ...b] = [1, 2, 3];
console.log(a, b);
在上面的代码中,我们使用传播运算符分配a = 1
和b = [2,3]
关于Array destructing.