ES5

一、ES5的新增

  • 什么是ES5,ECMAScript5

  • ES的版本更新,向下兼容,老版本并没有全部废弃,新版本只是在老版本的基础上新增

1. 严格模式

  • 严格模式:更严格的开发模式

    • js的代码规范非常不严格,所以严格模式的意义是:

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

      • 消除代码运行的一些不安全之处,保证代码运行的安全;

      • 提高编译器效率,增加运行速度;

      • 为未来新版本的Javascript做好铺垫

    • 严格模式的开启方式

      • 在作用域开始的位置,加上一行字符串:"use strict";

        • 局部严格

          • 安全,但不方便,麻烦

        • 全局严格

          • 不安全

        • 配合匿名函数

          • 利用父子作用域,本质是局部,但实现了全局的方便

    • 严格模式开启之后的变更

      1. 声明变量必须加关键字(var)

      2. 不允许参数名重复

      3. 没有明确隶属对象的函数中的this(执行了)指向undefined

      4. arguments的内容不会被形参的改变而影响

      5. arguments.callee被禁止使用

  • 记忆性知识点,改了就改了,没有商量的余地

 

2. 新增了一些数组的方法

  • 功能:

  • 参数:

  • 返回值:

  • 是否改变原数组:

    • arr.indexOf()

    • arr.forEach()

    • arr.map()

    • arr.filter()

    • arr.some()

    • arr.every()

    • arr.reduce()

    • arr.reduceRight()

      • var arr = ["hello",3,4,5,6,"world"];
        console.log(arr)
        // indexOf
        // 功能:返回指定数据所在的索引,没有,-1
        // 参数:1要查找的数据,2其实位置,可选
        // 返回值:索引或-1
        // 是否修改原数据:否
        // var res = arr.indexOf(5);
        // var res = arr.indexOf(5,3);
        // var res = arr.indexOf("a");
        // console.log(res);
        // forEach
        // 功能:遍历数组
        // 参数:函数,这个函数自带三个形参,1数据,2索引,3数组自身
        // 返回值:undefined
        // 是否修改原数据:否
        // var res = arr.forEach(function(val,idx,self){
        //     console.log(val,idx,self);
        // })
        // console.log(res);
        // map
        // 功能:1遍历数组,2修改数据
        // 参数:函数,这个函数自带三个形参,1数据,2索引,3数组自身
        // 返回值:数组,中的数据是:每次遍历到数组中数据时的返回值
        // 是否修改原数据:否
        // var res = arr.map(function(val,idx,self){
        //     console.log(val,idx,self);
        //     return val *= 1.3;
        // })
        // console.log(res);
        // filter
        // 功能:1遍历数组,2过滤数据
        // 参数:函数,这个函数自带三个形参,1数据,2索引,3数组自身
        // 返回值:数组,中的数据是:每次遍历到数组中数据时的返回值,为true时的值
        // 是否修改原数据:否
        // var res = arr.filter(function(val,idx,self){
        //     console.log(val,idx,self);
        //     return typeof val === "number";
        // })
        // console.log(res);
        // some
        // 功能:1遍历数组,2检测所有数据(只要有一个返回true,就是true,同时停止遍历)
        // 参数:函数,这个函数自带三个形参,1数据,2索引,3数组自身
        // 返回值:布尔值,遍历数组中数据时,只要有一个返回true,就是true,同时停止遍历
        // 是否修改原数据:否
        // var res = arr.some(function(val,idx,self){
        //     console.log(val,idx,self);
        //     return val === 4;
        // })
        // console.log(res);
        // every
        // 功能:1遍历数组,2检测所有数据(必须所有返回true,才是true)
        // 参数:函数,这个函数自带三个形参,1数据,2索引,3数组自身
        // 返回值:布尔值,遍历数组中数据时,必须所有返回true,才是true,只要有一个false,就是false,停止遍历
        // 是否修改原数据:否
        // var res = arr.every(function(val,idx,self){
        //     console.log(val,idx,self);
        //     return true;
        // })
        // console.log(res);
        // reduce
        // 功能:1遍历数组,2归并
        // 参数:
            // 1.函数,这个函数自带四个形参,1上一个值,2数据,3索引,4数组自身
            // 2.指定默认情况下      的   上一个值↑;如果没有指定,上一个值,默认找数组的第一个数据
        // 返回值:最后一个遍历的返回值
        // 是否修改原数据:否
        // var res = arr.reduce(function(prev,val,idx,self){
        //     console.log(prev,val,idx,self);
        //     return "返回给了下次执行时的prev";
        // },"prev的默认值,如果没有,prev找数组的第一个数据")
        // console.log(res);
        // 案例:利用reduce实现数组中所有数据的累加
        var arr = [2,3,4,5,6,7];
        var res = arr.reduce(function(prev,val,idx,self){
            return prev + val;
        })
        console.log(res);
posted @ 2020-05-07 22:41  大贾  阅读(271)  评论(0)    收藏  举报