基本语法注意事项
- === 比较运算符
- NaN
NaN === NaN; // false
1 | - null 和 undefined |
这是一个 多行 字符串
;
1 | - 字符串的连接 |
- 字符串的长度
1
2var s = 'Hello, world!';
s.length; // 13 - 字符串的索引
1
2
3
4var s = 'Hello, world!';
s[0]; // 'H'
s[0] = 'X';//对字符串的某个索引赋值,没有任何效果:
alert(s); // s仍然为'Hello, world!', 字符串不可变!!! - 改变字符串大小写
1
2
3var s = 'Hello, world!';
s.toUpperCase(); // 返回'HELLO, WORLD'
s.toLowerCase(); // 返回'hello, world!' - 搜索指定字符串出现的位置
1
2
3var s = 'Hello, world!';
s.indexOf('world'); // 返回7
s.indexOf('World'); // 没有找到指定的子串,返回-1 - 返回指定索引区间的子串
1
2
3var s = 'Hello, world!';
s.substring(0, 5); // 从索引0开始到5(不包括5),返回'hello'
s.substring(7); // 从索引7开始到结束,返回'world'
数组
- 创建数组
1
2var arr = [1, 2, 3.14, 'Hello', null, true];//数组可以包括任意数据类型
var arr = new Array(1, 2, 3); // 方法2,数组为[1, 2, 3] - 多维数组
var arr = [[1, 2, 3], [400, 500, 600], '-'];
- 数组的索引
1
2
3
4
5
6var arr = ['A', 'B', 'C'];
arr[0]; //返回索引为0的元素,即A
arr[1] = 99;
arr; //arr现在变为['A', 99, 'C']
arr[5] = 'x';
arr; //arr变为['A', 99, 'C', undefined, 'x'] - 取得Array的长度(改变长度)
1
2
3
4
5
6var arr = [1, 2, 3];
arr.length; // 3
arr.length = 6;
arr; // arr变为[1, 2, 3, undefined, undefined, undefined]
arr.length = 2;
arr; // arr变为[1, 2] - 搜索一个指定的元素的位置
1
2var arr = [10, 20, '30', 'xyz', 'D', 'E', 'F'];
arr.indexOf(10); // 元素10的索引为0,返回0 - 截取元素
1
2
3
4
5
6var arr = [10, 20, '30', 'xyz', 'D', 'E', 'F'];
arr.slice(0, 3); // 返回 [10, 20, '30']
arr.slice(3); // 从索引3开始到结束,返回 ['xyz', 'D', 'E', 'F']
var aCopy = arr.slice();//从头到尾截取所有元素,相当于复制
aCopy; //[10, 20, '30', 'xyz', 'D', 'E', 'F']
aCopy === arr; // false - 添加/删除元素
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15var arr = ['C', 'D', 'E', 'F'];
arr.push('G', 'H'); // 向尾部添加元素,返回新的长度: 6
arr; // ['C', 'D', 'E', 'F', 'G', 'H']
arr.pop(); // 删除末尾元素,返回'H'
arr; // ['C', 'D', 'E', 'F', 'G']
arr.unshift('A', 'B'); // 向头部添加元素,返回新的长度: 7
arr; // ['A', 'B', 'C', 'D', 'E', 'F', 'G']
arr.shift(); // 删除开头元素,返回'A'(若arr为[],则返回undefined)
arr; // ['B', 'C', 'D', 'E', 'F', 'G']
arr.splice(1, 3, 'H', 'I'); // 从索引1开始,删除3个元素,再添加2个元素,返回删除的元素 ['C', 'D', 'E']
arr;//['B', 'F', 'G', 'H', 'I']
arr.splice(2, 2); //只删除,不添加,返回['G', 'H']
arr; // ['B', 'F', 'I']
arr.splice(2, 0, 'J', 'K'); //只添加,不删除,返回[]
arr; // ['B', 'F', 'I', 'J', 'K'] - 排序(按照默认顺序排序)
1
2
3var arr = ['B', 'C', 'A'];
arr.sort();
arr; // ['A', 'B', 'C'] - 反转字符串
1
2
3var arr = ['A', 'B', 'C'];
arr.reverse();
arr; // ['C', 'B', 'A'] - 连接字符串
1
2
3
4
5
6
7var arr = ['C', 'B', 'A'];
var added = arr.concat([1, 2, 3]);
added; // ['C', 'B', 'A', 1, 2, 3]
arr; // 原字符串并未改变,仍为['C', 'B', 'A']
arr.concat(1, 2, [3, 4]); // concat会自动把Array拆开,返回['C', 'B', 'A', 1, 2, 3, 4]
//将每个元素用指定的字符串连接起来,返回连接后的字符串
added.join('-'); // 'C-B-A-1-2-3-4'
对象
- 是由键-值组成的无序集合
1
2
3
4
5
6
7
8var xiaoming = {
name: '小明',
birth: 1990,
height: 1.70,
weight: 65,
score: null
'middle-school': 'No.1 Middle School'
}; - 访问元素
1
2
3
4xiaoming.name;// '小明'
xiaoming['name']; // '小明'
xiaoming['middle-school']; // 'No.1 Middle School'
xiaoming.age; // undefined - 添加或删除属性
1
2
3
4
5
6
7
8
9
10
11xiaoming.age = 18; // 新增一个age属性
xiaoming.age; // 18
delete xiaoming.age; // 删除age属性
xiaoming.age; // undefined
delete xiaoming['name']; // 删除name属性
xiaoming.name; // undefined
delete xiaoming.school; // 删除一个不存在的school属性也不会报错
xiaoming.name;// '小明'
xiaoming['name']; // '小明'
xiaoming['middle-school']; // 'No.1 Middle School'
xiaoming.age; // undefined