我是JavaScript新手。从我在javascript中知道的一些教程中,有两种方法来声明数组。 一个是这样的:
var test = new Array("apple","pine");
或
test = new Array("apple","pine");
两个是这样的,
var test=["apple","pine"];
但是当我用这种方式宣布它时:
test=Array("apple","pine");
还可以。为什么呢?
答案 0 :(得分:3)
在Javascript中,您可以(并且应该)使用var
关键字声明变量,但这不是必需的。所以任何变量都可以这样声明:
var a = 'abc';
或
a = 'abc';
但是当您创建新变量时,第一个(使用var
)总是。否则,您可能会覆盖具有相同名称的现有变量。数组也是一个变量,因此也可以使用或不使用var
关键字来声明它。然后有两种方法来声明一个数组,并且两者完全相同:
var a = ['a', 'b', 'c'];
与:
相同var a = new Array('a', 'b', 'c');
,在这种情况下,new
关键字不是必需的 - 根据javascript规范。但它通常用于表示您正在创建对象的新实例。
答案 1 :(得分:2)
因为new Array(...)
和Array(...)
做同样的事情(=创建一个新数组)。这就是它在规范中的定义。
见这里:http://es5.github.com/#x15.4.1
当Array作为函数调用时 它不是作为构造函数 创建并初始化一个新数组 宾语。因此函数调用 数组(...)等同于对象 创建表达式new Array(...)with 相同的论点。
因此,这3行是等价的:
arr = ['apple', 'pine'];
arr = new Array('apple', 'pine');
arr = Array('apple', 'pine');
答案 2 :(得分:2)
首先,您应该坚持使用简单的“[...]”表示法来创建和初始化数组。因此:
var test = ["apple", "pine"];
您还应该谨慎使用var
所有您的本地变量。 (实际上,我会指出,不要将var
用于所有声明,这是不好的做法。)
现在,使用不带new
前缀的Array构造函数可以正常工作,因为这就是Array构造函数的定义方式。换句话说,如果没有用new
调用它,它会返回一个数组。但是,你真的不应该担心它,因为在大多数情况下根本没有理由使用Array构造函数。
答案 3 :(得分:2)
var
用于声明变量的范围。
x = 'hello';
function y() {
x = 'goodbye';
}
function z() {
var x = 'how are you';
}
y()
alert(x); // outputs 'goodbye';
z();
alert(x); // outpus 'hello';
基本上var
将变量声明为本地范围。如果你在脚本的顶层使用它没有实际效果,但在函数内它会使变量“本地”。