相关疑难解决方法(0)

ECMAScript文档中的SpreadElement是什么?它与MDN上的Spread语法相同吗?

ECMAScript规范SpreadElement描述

SpreadElement[Yield]:
...AssignmentExpression[In, ?Yield]
Run Code Online (Sandbox Code Playgroud)

这与Spread语法相同

扩展语法允许在可能需要零个或多个参数(用于函数调用)或元素(用于数组文字)的位置扩展数组表达式或字符串等可迭代的值,或者在零或更多的位置扩展对象表达式键值对(对象文字)是预期的.

句法

对于函数调用:

myFunction(...iterableObj);
Run Code Online (Sandbox Code Playgroud)

对于数组文字:

[...iterableObj, 4, 5, 6]
Run Code Online (Sandbox Code Playgroud)

MDN文档中描述?

什么是SpreadElement和/或扩展语法的用例; 如果SpreadElement和传播语法不同,它们的具体方式有何不同?

javascript ecmascript-6 spread-syntax

42
推荐指数
1
解决办法
3733
查看次数

在javascript中多次使用spread运算符?

为什么不能多次使用传播运算符?

let arr = [[[1, 2, 3]]];

console.log(arr); // Array [ Array[1] ]
console.log(...arr); // Array [ Array[3] ]
console.log(...(...arr));
// SyntaxError: expected '=>' after argument list, got ')'
Run Code Online (Sandbox Code Playgroud)

我希望:

console.log(...(...arr)); // Array [ 1, 2, 3 ]
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6 spread-syntax

18
推荐指数
1
解决办法
1616
查看次数

使用JavaScript中的新Array()定义未定义的值

看一些javascript代码,我看到(类似)这个:

var arr = Array.apply(null, {length: 10});
Run Code Online (Sandbox Code Playgroud)

阅读Function.prototype.apply()的MDN文档,我了解到虽然它通常期望一个数组作为它的第二个参数,它是要传递给被调用函数的参数数组,

你也可以使用类似于数组的任何类型的对象,所以在实践中这意味着它将具有属性长度和范围内的整数属性(0 ...长度).

所以从我所知道的,它调用Array()好像它传递了10个参数,但由于它没有定义任何这些"整数属性",所以就好像它传递了10个未定义的参数.那是对的吗?

console.log(arr);
Run Code Online (Sandbox Code Playgroud)

产量

[undefined,undefined,undefined,undefined,undefined,undefined,undefined,undefined,undefined,undefined]

这与结果完全不同

var barr = new Array(10);
console.log(barr);
Run Code Online (Sandbox Code Playgroud)

是的

[,,,,,,,,,]

这些阵列的行为也不同.

console.log(arr.map(function(item) { return 'hi';}));
console.log(barr.map(function(item) { return 'hi';}));
Run Code Online (Sandbox Code Playgroud)

['hi','hi','hi','hi','hi','hi','hi','hi','hi','hi']

[,,,,,,,,,]

我想知道为什么map函数不能用于第二个.所以我检查了console.log(1 in arr);哪个给了true和`console.log(1 in barr);' 这给了.

所以我目前的猜测是arr是一个数组,它包含10个变量作为整数属性,每个变量的值都是undefined,而barr是一个数组,尽管它的长度为10,但没有整数属性.并且Array.apply可以工作,因为它询问{length:10}它的属性0是什么,接收未定义,因此将undefined分配给它正在构造的数组的属性0,依此类推.我的推理是否正确?是否真的没有那么简单的方法来定义一个数组,该数组包含其范围内每个索引的未定义整数属性,而不是根本没有整数属性?因为看这个,在我看来这new Array()是无用的.

javascript arrays properties

7
推荐指数
1
解决办法
1440
查看次数