ES5的语法
js在产生的时候,年代比较早,当时的web需求比较少,所以刚开始的js功能比较少,语法没有特别严谨。随着时代的发展和web应用的普及,js需要更多的功能,以及更严谨的语法,所以,js会有版本的升级。第一版的js是ECMA一开始统一了标准以后的版本。我们现在的所使用的语法,大多是ECMAScript版本3的语法,简称es3。到目前为止,已经有了es7,8,9,甚至es10 的版本了。近几年,基本每年都会有新的版本更新。
每个版本的更新,都需要浏览器支持才能运行,但浏览器不会在js更新之后,立马更新。所以有的版本出来之后,需要在很长时间之后,浏览器才会兼容他。到目前为止,我们公认,es5是兼容性最好的版本。
es5比起我们所正在使用的es3,语法没有什么变化,增加了一个严格模式,还有一些数组的方法。
严格模式
由于 js 的作用域和隐式声明变量等语法会造成很多预想不到的错误,所以 ES5 中新增了一个严格模式的语法,用于严 格规范代码的书写。
使用语法:
"use strict";
使用说明:
1. 要放在代码的最前面,也就是在 script 标签中的第一行或者某个函数中的第一行,否则会失效
2. 严格模式可以规范当前 script 标签或者当前函数中的代码,不能规范别的 script 标签中的代码和别的函数
规范的语法:
1. 不允许隐式声明变量
2. 禁止函数中的形参重名
3. 禁止函数中的 this 代表 window
为什么要使用严格模式?
1. 可以让代码更加规范
2. 可以让代码运行起来更快,提高运行效率
新增数组方法
indexOf 方法
查找某个元素在数组中第一次出现的位置
arr.indexOf( 元素 ,[ 开始查找的起始下标 ]);
# 参数 1 :将要查找的元素
# 参数 2 :可选项。从哪个下标开始往后查找
# 返回值:如果找到了,就返回这个元素在数组中的下标,如果没有找到,就返回 -1
例:
var arr = [ 1 , 3 , 5 , 7 , 7 , 5 , 3 , 1 ];
console . log ( arr . indexOf ( 5 )); // 2 - 查找数字 5 在数组中第一次出现的下标
console . log ( arr . lastIndexOf ( 5 )); // 5 - 查找数字 5 在数组中最后一次出现的位置
console . log ( arr . indexOf ( 5 , 3 )); // 5 - 从下标 2 开始查找数字 5 在数组中第一次出现的位置
console . log ( arr . lastIndexOf ( 5 , 4 )); // 2 - 从下标 4 开始查找数字 5 在数组中最后一次出现的下标
console . log ( arr . indexOf ( "5" )); // -1 - 数组中全是数字,找不到字符串 5 ,所以返回 -1
forEach 方法
用于遍历数组
语法:
arr.forEach(function(值, 下标, 当前数组){
// 代码段
});
# 在这个方法中需要传入一个函数参数,这个函数的参数说明如下:
# 参数 1 :数组遍历出来的每个值
# 参数 2 :可选项。数组遍历出来的每个值对应的下标
# 参数 3 :可选项。被遍历的当前数组
例:
var arr = [ 1 , 2 , 3 , 4 , 5 ];
arr . forEach ( function ( x , index , a ){
console . log ( x + '|' + index + '|' + ( a === arr ));
});
// 输出为:
// 1|0|true
// 2|1|true
// 3|2|true
// 4|3|true
// 5|4|true
使用说明:
这个方法没有返回值,返回值为undefifined,不会改变原来数组的值。
map 方法
遍历数组,并将每个元素经过函数处理后,形成新的元素,所有新元素组成新数组返回
语法:
arr.map(function(值,下标,当前数组){
return 新的值 - 通常新的值是由旧的值处理以后得到
});
例:
var arr = [ 1 , 2 , 3 , 4 , 5 ];
var arr2 = arr . map ( function ( item ){
return item * item ;
});
console . log ( arr2 ); //[1, 4, 9, 16, 25]
使用说明:
这个方法主要用于以同样的规则处理数组中的每个值,并组成新的数组返回
fifilter 方法
将数组中满足指定条件的值,组成新的数组返回
语法:
arr.filter(function(值, 下标, 当前数组){
return 筛选条件
});
例:
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var arr2 = arr.filter(function(v, index) {
return v>5
});
console.log(arr2); //[6, 7, 8, 9, 10]
使用说明:
使用方法和功能跟map方法很像,只是运行规则不一样。map方法中的函数,用于返回新的元素,而fifilter方法中的 函数,根据返回true或false来筛选元素