不知道的js

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_27790011/article/details/82288908

1.strict模式

JavaScript在设计之初,为了方便初学者学习,并不强制要求用var申明变量。这个设计错误带来了严重的后果:如果一个变量没有通过var申明就被使用,那么该变量就自动被申明为全局变量。
在同一个页面的不同的JavaScript文件中,如果都不用var申明,恰好都使用了变量i,将造成变量i互相影响,产生难以调试的错误结果。
使用var申明的变量则不是全局变量,它的范围被限制在该变量被申明的函数体内(函数的概念将稍后讲解),同名变量在不同的函数体内互不冲突。
为了修补JavaScript这一严重设计缺陷,ECMA在后续规范中推出了strict模式,在strict模式下运行的JavaScript代码,强制通过var申明变量,未使用var申明变量就使用的,将导致运行错误。

启用strict模式的方法是在JavaScript代码的第一行写上:
‘use strict’

不用var申明的变量会被视为全局变量,为了避免这一缺陷,所有的JavaScript代码都应该使用strict模式。我们在后面编写的JavaScript代码将全部采用strict模式。

2.数组的一些方法
slice():slice()就是对应String的substring()版本,它截取Array的部分元素,然后返回一个新的Array:
push和pop:push()向Array的末尾添加若干元素,pop()则把Array的最后一个元素删除掉

unshift和shift:如果要往Array的头部添加若干元素,使用unshift()方法,shift()方法则把Array的第一个元素删掉

sort:sort()可以对当前Array进行排序,它会直接修改当前Array的元素位置,直接调用时,按照默认顺序排序

reverse:reverse()把整个Array的元素给掉个个,也就是反转

splice:splice()方法是修改Array的“万能方法”,它可以从指定的索引开始删除若干元素,然后再从该位置添加若干元素

concat:concat()方法把当前的Array和另一个Array连接起来,并返回一个新的Array

join:join()方法是一个非常实用的方法,它把当前Array的每个元素都用指定的字符串连接起来,然后返回连接后的字符串

3.Map和Set
Map是一组键值对的结构,具有极快的查找速度。

var m = new Map(); // 空Map
m.set('key1', 'value1'); // 添加新的key-value
m.set('key2', 'value2');
m.has('key1'); // 是否存在key 'key1': true
m.get('key1'); // value1
m.delete('key1'); // 删除key 'value1'
m.get('key1'); // undefined

Set和Map类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在Set中,没有重复的key。

var s = new Set([1, 2, 3, 3, '3']);
s; // Set {1, 2, 3, "3"}

s.add(4);
s; // Set {1, 2, 3, 4}
s.add(4);
s; // 仍然是 Set {1, 2, 3, 4}

var s = new Set([1, 2, 3]);
s; // Set {1, 2, 3}
s.delete(3);
s; // Set {1, 2}

4.iterable
遍历Map和Set就无法使用下标。为了统一集合类型,ES6标准引入了新的iterable类型,Array、Map和Set都属于iterable类型。
具有iterable类型的集合可以通过新的for … of循环来遍历。

var a = ['A', 'B', 'C'];
var s = new Set(['A', 'B', 'C']);
var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);
for (var x of a) { // 遍历Array
    console.log(x);
}


for (var x of s) { // 遍历Set
    console.log(x);
}

for (var x of m) { // 遍历Map
    console.log(x[0] + '=' + x[1]);
}



a.forEach(function (element, index, array) {
    // element: 指向当前元素的值
    // index: 指向当前索引
    // array: 指向Array对象本身
    console.log(element + ', index = ' + index);
});

forEach()方法是ES5.1标准引入的,你需要测试浏览器是否支持。
Set与Array类似,但Set没有索引,因此回调函数的前两个参数都是元素本身

猜你喜欢

转载自blog.csdn.net/qq_27790011/article/details/82288908