笔记:JavaScript高级程序设计

前言
JavaScript高级程序设计杂记


label语句

1.8
1
2
3
4
5
6
7
8
9
10
11
let num = 0;
outPoint:
for (let i = 0 ; i < 10 ; i++){
for (let j = 0 ; j < 10 ; j++){
if( i == 5 && j == 5 ){
break outPoint;
}
num++;
}
}
console.log(num); // 55

with语句

1.8
1
2
3
4
5
6
7
8
9
10
11
const obj = {
a: 1,
b: 2
},
b = 20;
c = 3;
with(obj){
console.log(a); // 1
console.log(b); // 20
console.log(c); // 3
}

instanceof

1.8
1
2
3
4
const obj = {};
console.log(obj instanceof Object);
console.log(obj instanceof Array);
console.log(obj instanceof RegExp);

⚠️这个不支持检测检出数据类型。

Array

1.8
1
2
3
4
let arr = [1, 2, 3];

arr.length = 2; // [1,2]
arr[4] = 4; // [1, 2, empty, 4]
  • 数组的length属性是可写的。

Array方法

转换方法(toStringvalueOfjoin

1.8
1
2
3
4
5
6
7
const arr = [1, null, 2, undefined, 3,, 4];

arr.valueOf(); // [1, null, 2, undefined, 3,, 4]

arr.toString(); // 1,,2,,3,,4

arr.join("-"); // 1--2--3--4
  • valueOf方法会返回一个数组。
  • toString方法会返回一个字符串他们用逗号隔开。
  • join方法会返回一个字符串,假如没有传递参数他们用逗号隔开,假如有传递参数,则以传递参数隔开。

⚠️ 如果数组中的某一项为undefined, null, 空,那么该值再join()toLocaleString()toString()valueOf()方法返回的结果中以空字符串表示。

⚠️ 假如alert(arr.valueOf())这样会打印出1,,2,,3,,4而不是[1,,2,,3,,4],这里会再后台调用toString方法进行转换,因为alert只接收字符串。

栈方法(后进先出)

1.8
1
2
3
4
5
let arr = [1, 2, 3, 4];

arr.push(5, 6); // [1, 2, 3, 4, 5, 6]

arr.pop(); // [1, 2, 3, 4, 5]
  • push方法往数组末尾添加n项。
  • pop方法删除数组最后一项。

队列方法(先进先出)

1.8
1
2
3
4
5
let arr = [1, 2, 3, 4];

arr.unshift(-1, 0); // [-1, 0, 1, 2, 3, 4]

arr.shift(); // [0, 1, 2, 3, 4]
  • unshift方法往数组头部添加n项。
  • shift方法删除数组第一项。

重排序方法

1.8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
let arr =  [1, 2, 3, 4, 5, 10];

arr.reverse(); // [10, 5, 4, 3, 2, 1]

arr.sort(); // [1, 10, 2, 3, 4, 5]
arr.sort(compare); // [10, 5, 4, 3, 2, 1]

function compare(val1, val2) {
if(val1 < val2) {
return 1;
} else if(val1 > val2) {
return -1;
} else {
return 0;
}
}
  • revert方法会将数组反转。
  • sort方法会根据字符串进行比较、排序。

操作方法

1.8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
let arr = [1, 2, 3, 4];

arr.concat([5, 6], [7, 8]); // [ 1, 2, 3, 4, 5, 6, 7, 8 ]
arr.concat(undefined, null); // [ 1, 2, 3, 4, undefined, null ]

arr.slice(1); // [ 2, 3, 4 ]
arr.slice(1, 2); // [ 2 ]
arr.slice(-3, -1); // 等同于arr.slice(arr.length -3, arr.length -1) 输出 [ 2, 3 ]

// 增加
arr.splice(1, 0, "a", "b"); // [ 1, 'a', 'b', 2, 3, 4 ]
// 替换
arr.splice(0, 1, 0); // [ 0, 'a', 'b', 2, 3, 4 ]
// 删除
arr.splice(1, 2); // [ 0, 2, 3, 4 ]
  • concat方法会将数组拼接到后面,如果非数组也会作为单独一项拼接到后面。该方法返回一个新数组,不改变原数组。
  • slice方法具有两个参数,第一个参数为起始项,第二个参数为结束项。当只有第一个参数时,会返回起始项到末尾的数组。当有两个参数时,不会包含结束项(含头不含尾)。当有参数为负数时,会用数组长度加上该参数来计算。
  • splice方法具有三个参数+。第一个参数是起始项,第二个参数是长度,第二个参数后…会往起始项后面添加。会改变原数组。

位置方法

1.8
1
2
3
4
5
let arr = [1, 2, 3, 4, 3, 2, 1];

arr.indexOf(2); // 1

arr.lastIndexOf(2); // 5
  • indexOf方法会从数组开头开始检索,返回首个符合的下标。
  • lastIndexOf方法会从数组末尾开始检索,返回首个符合的下标。

⚠️ 检索是使用全等的,即===

⚠️ 假如没有符合的会返回-1

迭代方法


笔记:JavaScript高级程序设计
作者
墨陌默
发布于
2019年7月22日
许可协议