一、ES5简介

  ECMAScript 5.1 (或仅 ES5) 是ECMAScript(基于JavaScript的规范)标准的修正。 与HTML5规范进程本质类似,ES5通过对现有JavaScript方法添加语句和原生ECMAScript对象做合并实现标准化。

二、ES5严格模式

  目的:

    1.消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为。

    2.消除代码运行的一些不安全之处,保证代码运行的安全。

    3.提高编译器效率,增加运行速度。

    4.为未来新版本的Javascript做好铺垫。

  使用:

    1.针对整个脚本文件:将"use strict"放在脚本文件的第一行,则整个脚本都将以"严格模式"运行。如果这行语句不在第一行,则无效,整个脚本以"正常模式"运行。如果不同模式的代码文件合并成一个文件,这一点需要特别注意。

    2.针对单个函数:将"use strict"放在函数的第一行,则整个函数以"严格模式"运行。

  语法及行为改变:

    1.全局变量显式声明:在正常模式中,如果一个变量没有声明就赋值,默认是全局变量。严格模式禁止这种用法,全局变量必须显式声明。因此,严格模式下,变量都必须先用var命令声明,然后再使用。

    2.函数形参不允许重复。

    3.禁止使用with语句。

    4.禁止函数内部this关键字指向全局对象,this指向undefined。

    5.函数必须声明在顶层。

三、数组新增的方法

  1.indexOf 返回整数索引值,如果没有匹配(严格匹配),返回-1;fromIndex可选,表示从这个位置开始搜索,若缺省或格式不合要求,使用默认值0。




ES5更新文档 es5文件_JSON

ES5更新文档 es5文件_ES5更新文档_02

var arr = [2,3,4,5];

var iIndex = arr.indexOf(-3);

console.log(iIndex);


indexOf


  2.forEach 遍历数组,第二个参数为可选的上下文参数(改变this指向);forEach方法中的function回调支持3个参数,第1个是遍历的数组内容;第2个是对应的数组索引,第3个是数组本身。forEach不会遍历空位置的内容。如:[1, , 3],只会遍历1和3。




ES5更新文档 es5文件_JSON

ES5更新文档 es5文件_ES5更新文档_02

var arr = [1,2,3,4];

arr.forEach(function(v,k,arr){

    console.log(v,k,arr);

});


forEach


  3.map(function(item,index,array){})遍历数组,将数组中所有元素都让一个函数去处理,新元素组成新数组返回




ES5更新文档 es5文件_JSON

ES5更新文档 es5文件_ES5更新文档_02

var arr = [2,6,4,8];

var newArr = arr.map(function (v){

    return v * 2;

});

console.log(newArr);


map


  4.reduce 归并,递归减少;callback函数接受4个参数:之前值、当前值、索引值以及数组本身。initialValue参数可选,表示初始值。若指定,则当作最初使用的previous值;如果缺省,则使用数组的第一个元素作为previous初始值,同时current往后排一位,相比有initialValue值少一次迭代。




ES5更新文档 es5文件_JSON

ES5更新文档 es5文件_ES5更新文档_02

var arr = [1,2,3,4];

var result = arr.reduce(function (previous,current,index,arr){

    return previous + current;

});

console.log(result);


reduce


  5.filter 指数组过滤后,返回过滤后的新数组。 filter的callback函数需要返回布尔值true或false。




ES5更新文档 es5文件_JSON

ES5更新文档 es5文件_ES5更新文档_02

var arr = [4,5,6,7];

var newArr = arr.filter(function (v){

if(v > 5){

    return true;

}else {

    return false;

}

});

console.log(newArr);


filter


  6.some方法先遍历数组,如果至少有一个元素满足条件,则返回true,否则返回false




ES5更新文档 es5文件_JSON

ES5更新文档 es5文件_ES5更新文档_02

var arr = [2,4,6,10,15,21];
var f = arr.some(function(element,index,array){
    if(element > 20){
       return true;
    }else{
        return false;
    }
});


some


  7.every方法先遍历数组,判断所有元素是否满足条件,返回布尔值




ES5更新文档 es5文件_JSON

ES5更新文档 es5文件_ES5更新文档_02

var arr = [2,4,6,10,15,21];
var f = arr.every(function(element, index, array){
    return element > 10;
});


every


  8.find方法返回数组中满足条件的第一个值,找不到元素返回false




ES5更新文档 es5文件_JSON

ES5更新文档 es5文件_ES5更新文档_02

var arr = [2,4,6,10,15,21];
var f = arr.find(function(element, index, array){
    return element > 10;
});


find


  9.findIndex方法返回数组中满足条件的第一个值得下标,找不到元素则返回-1




ES5更新文档 es5文件_JSON

ES5更新文档 es5文件_ES5更新文档_02

var arr = [2,4,6,10,15,21];
var f = arr.findIndex(function(element, index, array){
    return element > 10;
});


findIndex


   10.lastIndexOf方法:从数组的末尾开始查找,而不是从开头。还有一个不同就是fromIndex的默认值是array.length - 1而不是0。




ES5更新文档 es5文件_JSON

ES5更新文档 es5文件_ES5更新文档_02

var arr = [2,3,4,5,3,4,5,6,7];

var iIndex = arr.lastIndexOf(3);

console.log(iIndex);


lastIndexOf


  11.Array.isArray():判断一个变量是否为数组。




ES5更新文档 es5文件_JSON

ES5更新文档 es5文件_ES5更新文档_02

var obj = [];

console.log(Array.isArray(obj));


isArray


 四、ES5新增字符串方法

  trim方法:去除字符串首尾的空白字符




ES5更新文档 es5文件_JSON

ES5更新文档 es5文件_ES5更新文档_02

var str = ' hello world ';

console.log(str.trim());


trim


五、ES5新增JSON对象方法

  1.JSON.parse:将一个JSON格式的字符串转换成对象。




ES5更新文档 es5文件_JSON

ES5更新文档 es5文件_ES5更新文档_02

var str = '{"name":"张三"}';

console.log(JSON.parse(str));


JSON.parse


  2.JSON.stringify:将对象转换成JSON格式的字符串。




ES5更新文档 es5文件_JSON

ES5更新文档 es5文件_ES5更新文档_02

var obj = {name:'张三'};

console.log(JSON.stringify(obj));


JSON.stringify