数组,字符串和数字是一个程序最基本的组成部分,但在JavaScript中,它们可谓让人喜忧掺半。
本章将介绍JavaScript中的几个内置值类型,让读者深入了解和合理运用它们。
2.1 数组
和其他强类型语言不同,在JavaScript中,数组可以容纳任何类型的值,可以是字符串,数字,对象,甚至是其他数组:
var a = [1, "2", [3]];
a.length; //3
a[0] === 1; //true
a[2][0] === 3; //true
对数组声明后即可向其中加入值,不需要预先设定大小:
var a = [];
a.length; //0
a[0] = 1;
a[1] = '2';
a[2] = [3];
a.length; //3
使用delete运算符可以将单元从数组中删除,但是请注意,单元删除后,数组的length属性并不会发生变化。
类数组
有时候需要将类数组转换为真正的数组,这一般通过数组工具函数(indexOf(...),concat(...),forEach(...)等)来实现。
第一种方法:
function foo() {
var arr = Array.prototype.slice.call(arguments);
arr.push('bam');
console.log(arr);
}
foo('bar', 'baz'); //['bar', 'baz', 'bam']
如上所示,slice()返回参数列表的一个数组复本。
第二种方法:
var arr = Array.from(arguments);
2.2 字符串
字符串经常被当成字符数组。
例如下面两个值:
var a = "foo";
var b = ['f', 'o', 'o'];
字符串和数组的确很相似,它们都是类数组,都有length属性以及indexOf(...)和concat(...)方法。
a.length; //3
b.length; //3
a.indexOf('o'); //1
b.indexOf('o'); //1
但这并不意味着它们是“字符数组”,比如:
a[1] = 'O';
b[1] = 'O';
a; //'foo'
b; //['f', 'O', 'o']
JavaScript中字符串是不可变的,而数组是可变的。字符串不可变是指字符串的成员函数不会改变其原始值,而是创建并返回一个新的字符串。而数组的成员函数都是在其原始值上进行操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)