ES6简单介绍

作者:

文章目录

  • 因为let声明的变量不会挂在window上,且声明的值会形成独立的块级作用域,所以使用起来能节省浏览器的运行速度

    	<button id="btn1">按钮一</button><button id="btn2">按钮二</button><script>function $(id) {return document.getElementById(id)}$('btn1').onclick = function() {for(var i = 0; i < 10; i ++){setTimeout(()=>{console.log(i);})}}$('btn2').onclick = function() {for(let i = 0; i < 10; i ++){setTimeout(()=>{console.log(i);})}}</script>
    

    按钮一事件触发的效果:

    在这里插入图片描述

    按钮二事件触发的效果:

    在这里插入图片描述

    两者事件触发后的输出结果不一样是因为JS这门语言的 事件轮询机制 与var和let这两个关键字区别造成的

    const声明的基本类型数据不会改变值,但是若声明的是引用类型数据,而在JS概念中,引用类型分地址与数据,const声明引用类型数据时虽然不会改变地址,但是引用数据里面存储的值还是可以改变的

    ES6语法中为了让冗杂的回调地狱的结构变得更加直观便于人了解,于是便出现的Promise对象这个东西

    const p = new Promise(function(resolve,reject){resolve('成功');//reject('失败');
    }).then(value => {console.log(value)
    },reason => {console.log(reason)
    }).then(value => {console.log(value)
    },reason => {console.log(reason)
    })...
    

    then 方法返回的是一个promise对象,对象的状态由回调函数的执行结果决定

    如果回调函数返回的是非promise类型的属性,状态是成功,返回值就是对象成功的值

    Promise对象有两个特点:
    ①,对象的状态不受外界的影响,Promise有三种状态:Pending(进行中)、fulfilled(已成功)、rejected(失败),只用异步操作的结果可以决定当前是哪一种状态,其他任何操作都无法改变这个操作。
    ②.一旦状态改变之后就不会再改变。任何时候都可以得到这个结果。状态变化只有两种可能:从pending到fulfilled和从pending到rejected。只要改变就已经定型了。

    Promise的缺点:
    ① 一旦创建就无法取消,一旦新建就会立即执行
    ② 如果不设置回调函数,它的内部错误就不会反映到外部。
    ③ 当处于pending状态时,无法判断进展到哪一阶段(刚开始还是快完成)。

    ③ 当处于pending状态时,无法判断进展到哪一阶段(刚开始还是快完成)。

    评论

    发表回复

    您的邮箱地址不会被公开。 必填项已用 * 标注

    站内搜索