Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 没有关键字new的Array()是什么?_Javascript_Arrays - Fatal编程技术网

Javascript 没有关键字new的Array()是什么?

Javascript 没有关键字new的Array()是什么?,javascript,arrays,Javascript,Arrays,我遇到了一段有趣的代码: function repeat(str,x) { return Array(x+1).join(str); } repeat("wow", 2); 结果是一个字符串“wowow”。但是,我不知道这个数组(x+1)实际上在做什么。非常有趣的是,如果我只使用Array(x)它只打印str一次,而不是预期的两次 当I console.logArray(x+1)时,它会给出以下奇怪的输出: 数组(x+1)(3)[空×3] 我知道字符串上存在一个repeat()方法

我遇到了一段有趣的代码:

function repeat(str,x) {
    return Array(x+1).join(str); 
}
repeat("wow", 2);
结果是一个字符串
“wowow”
。但是,我不知道这个
数组(x+1)
实际上在做什么。非常有趣的是,如果我只使用
Array(x)
它只打印
str
一次,而不是预期的两次

当I console.log
Array(x+1)
时,它会给出以下奇怪的输出:

数组(x+1)(3)[空×3]


我知道字符串上存在一个
repeat()
方法,可以很高兴地使用它来实现与所提供函数相同的结果。但正如我所遇到的,我想知道
数组(x+1)
背后的机制。我还知道什么是数组或
newarray()
。但是这是我第一次看到。

数组
被指定为
new
是可选的。发件人:

当作为构造函数调用时,它创建并初始化一个新的数组外来对象。当数组作为函数而不是构造函数调用时,它还会创建并初始化一个新的数组对象因此,函数调用
Array(…)
等价于具有相同参数的对象创建表达式
newarray(…)

(我的重点)


令我惊讶的是,他对此一无所知。如果我有时间,我可能必须修复…

正如您在控制台
数组(x+1)
中看到的那样,创建一个包含3个空元素(x=2)的数组。然后用string
wow
将这些元素连接起来,这样就可以:

空元素+“哇”+空元素+“哇”+空元素=“wowow”

数组(x+1)创建一个包含3个元素的数组,所有元素都包含空元素。 稍后,您将这些空元素与字符串wow连接,从而返回:
empty+“哇”+empty+“哇”+empty=>wowow

这是一个创建数组的函数。 诸如此类的事情,你真的应该在询问之前在你的控制台中尝试一下

这些事情可以在Javascript中完成,尽管它们有点违反直觉:

function A() {
    return new Array();
}
let myA1 = A(); // returns an array
let myA2 = new A(); // also returns an array.
编辑:
原因是Javascript是一种原型语言,“类”只是我们新开发的一个函数。如果该函数未返回任何内容,则在本例中,我们会得到一个新的实例,如果该函数返回其他对象,则会返回该对象。

所做的是创建一个大小为x+1(本例中为3)的数组。并用str变量值填充每个单元格

在这段代码中,我创建了一个大小为3的单元格数组,并用字符串“yolo”填充它们


fiddle示例:

请将输出粘贴为文本,而不是图像。
数组
,即使没有新实例,也会创建一个新实例。有没有都一样。如果您创建一个以数字作为第一个参数的数组,则会创建一个具有所述长度但没有元素的新数组。可能与@T.J.Crowder完全相同。我正在检查MDN,因为它是我通常的参考位置,我无法从那里获得它。我很高兴知道你提供的另一个消息来源。
$(document).ready(function(){
 var str = "yolo";

 console.log(Array(4).join(str));  
})