ES5 ES6相关内容 day15

1. JavaScript 的版本

          JavaScript这种语言的基本语法结构是由ECMAScript来标准化的, 所以我们说的JavaScript版本一般指的是ECMAScript版本.

2009年12月,ECMAScript 5.0版正式发布

2011年6月,ECMAscript 5.1版发布

2015年6月,ECMAScript 6正式发布,并且更名为“ECMAScript 2015”。

2016年6月,ECMAScript6.1发布, 与ECMAScript6差异较小

ES5 : ECMAScript 5

ES5的严格模式:

所谓严格模式,从字面上就很好理解,即更严格的模式,在这种模式下执行,浏览器会对JS的要求更苛刻,语法格式要求更细致,更符合逻辑

怪异模式:就是我们之前一直使用的开发模式,就叫怪异模式.因此很多时候出来的结果是非常 怪异的,所以才称之为怪异模式

使用严格(全局)模式

         "use strict";

         n = 10;

console.log(n);

使用严格(局部)模式

        function fn(){

            "use strict";

            n = 10

            console.log(n);

        }

Javascript 为什么要设立严格模式:

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

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

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

  例如以下几点:

 1. 不可以省略var声明变量

 2. 禁止函数使用this关键字指向全局变量

 3. 禁止使用八进制方法

 4. 不允许在非函数的代码块内声明函数

 5. 严格模式下,arguments变量,形参是不会变(不同步)

ES5-bind

    绑定一个新对象, 让函数中的this指向该对象, 一般在定时器中使用较多。

例如:

var name = "哈哈";

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

var obj2 = {

      name: "李四",

      show: function(){

    console.log(this.name);

      }

}

setInterval(obj2.show.bind(obj), 2000); 函数对象.bind(绑定的对象)()

ES5-Array新增

indexOf() : 判断数组中是否包含某个元素, 和字符串的indexOf用法类似

forEach() : 用来遍历数组中的每一项;这个方法执行是没有返回值的,对原来数组也没有影响

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

arr.forEach(function(value, index, array){

      console.log("值:" + value + ", 下标:" + index + ", 数组:" + array);

});

map(): 和forEach非常相似,都是用来遍历数组中的每一项的,区别是map的回调函数中支持return返回

不管是forEach还是map 都支持第二个参数值,第二个参数的意思是把匿名回调函数中的this进行修改。

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

var newArr = arr.map(function(value, index, array){

        return value * 2;

});

console.log(arr);  //[1,2,3,4,5]

console.log(newArr);  //[2,4,6,8,10]

注意:forEach和map不支持IE8及以下

    reduce()用法: 接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终为一个值,是ES5中新增的一个数组逐项处理方法  

 var result = arr.reduce(function(pre, cur, index, array){

     console.log("前一个值:" + pre + "当前值:" + cur + ", 下标:" + index + ", 数组:" + array);          return cur;    

}, 10);

reduce接收四个两个参数, 第二个参数可选(为pre的初始值)

第一个参数是回调函数,该回调函数中又包含四个参数, 分别为:

    pre:上一次调用回调函数时的返回值,或者初始值  

    cur:当前正在处理的数组元素

    index : 当前正在处理的数组元素下标

    array : 调用reduce()方法的数组

   result: 遍历完数组后的最终结果

reduce()用法:    使用reduce()求和

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

var sum = arr.reduce(function(pre, cur){

        return pre + cur;

});

console.log(sum); //25

forEach、map以及reduce的相同点:

    都是用于处理数组

    都不兼容IE8及以下

forEach、map以及reduce的不同点:

    forEach 方法是将数组中的每一个值取出做一些程序员想让他们做的事情

    map 方法是将数组中的每一个值放入一个方法中做一些程序员想让他们做的事情后可以返回一个新的数组

    reduce 方法 将数组中的每一个值与前面的值处理后得到的最终值

    filter():  过滤出数组中你想要的元素, 不改变原数组

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

function fn(n) {

      return n >= 3;

}

var newArr = arr.filter(fn);

console.log(arr);  //[1,2,3,4,5]

console.log(newArr); //[3,4,5]

ES6

ES6-let

let是ES6中新增关键字.它的作用类似于var,用来声明变量,但是所声明的变量,只在let命令所在的代码块内有效

if(true){

    var a = 1;

    let b = 2; }

console.log(a);

console.log(b);  // 报错:ReferenceError: b is not defined

ES6-let let关键字涉及到一个概念:块级作用域

ES6以前,只有全局作用域和函数局部作用域,ES6之后加入块级作用域,一个大括号{}我们称之为一个代码块,一个大括号{}的内部就是块级作用域

利用块级作用域可以有效解决以下问题

1.防止全局变量泄露

2.防止变量提升带来的覆盖问题

ES6-const

const 声明的是常量,一旦声明,值将是不可变的, const 也具有块级作用域 ,  const 不可重复声明

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值