从一个新手的JavaScript数组的困难
A difficulty with JavaScript Array from a newbie
我是JavaScript新手。从一些教程我知道在javascript中有两种方式来声明数组。一个是这样的:
var test = new Array("apple","pine");
或
test = new Array("apple","pine");
两个是这样的,
var test=["apple","pine"];
但是当我用这种方式声明它时:
test=Array("apple","pine");
还可以。为什么?
在Javascript中,您可以(并且应该)使用var
关键字声明变量,但这不是必需的。所以任何变量都可以这样声明:
var a = 'abc';
或
a = 'abc';
但是第一个(var
)应该在创建新变量时始终使用。否则,您可能会用相同的名称覆盖已经存在的变量。数组也是一个变量,因此也可以使用或不使用var
关键字来声明它。然后有两种声明数组的方法,它们都做同样的事情:
var a = ['a', 'b', 'c'];
的作用与
相同var a = new Array('a', 'b', 'c');
和new
关键字,在这种情况下,是不需要的-根据javascript规范。但它通常用于表示您正在创建一个对象的新实例
首先,您应该坚持使用简单的"[…]来创建和初始化你的数组。因此:
var test = ["apple", "pine"];
您还应该小心地对所有本地变量使用var
。(实际上,我要大胆地说,不把var
用于所有声明只是一个不好的做法。)
现在,使用没有new
前缀的Array构造函数可以工作,因为这就是Array构造函数的定义方式。换句话说,如果没有使用new
调用它,它无论如何都会返回一个数组。但是,您真的不应该担心它,因为在大多数情况下根本没有理由使用Array构造函数。
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
声明一个变量为局部作用域。如果你在脚本的顶层使用它,它没有实际的效果,但在函数中,它会使变量"local"。
因为new Array(...)
和Array(...)
做同样的事情(=创建一个新的数组)。这就是规范中的定义
请看这里:http://es5.github.com/#x15.4.1
因此,这三行是等价的:当Array作为函数调用时而不是作为构造函数创建并初始化一个新的Array对象。因此函数调用Array(…)等价于对象创建表达式new Array(…相同的参数
arr = ['apple', 'pine'];
arr = new Array('apple', 'pine');
arr = Array('apple', 'pine');
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- 将Javascript数组发送到控制器ASP.NET MVC
- JavaScript数组包含一个值
- 将JavaScript数组传递给函数
- javascript:数组循环
- 将数据存储在javascript数组中以供进一步使用
- 在Javascript数组中查找绝对最大值
- JavaScript数组优化以提高性能
- 在javascript数组中分散数字
- 如何发送分配列表<字符串>到JavaScript数组或可枚举对象
- Javascript数组动态
- javascript数组元素是否知道其封闭数组
- 将 JSON 数组解析为 JavaScript 数组
- 将Transform和Instance Variable转换为对象的JavaScript数组
- 使用Web Html表单创建Javascript数组
- 从重复的javascript数组结果集中只获取一行
- 如何为Javascript数组()的使用准备PHP变量
- Javascript数组和函数
- 为DataTables aoColumnDefs创建JavaScript数组(JSON格式)