ES6 类型定义-箭头函数- promise

13 篇文章 0 订阅
3 篇文章 0 订阅

var let const 区别

  1. var
    提前声明变量 √
    作用域: 函数
  2. let
    重复定义 ×
    提前声明变量 ×
    作用域:块级
    暂时性死区 √ : 只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响。
var tmp = 123;
if (true) {
   tmp = 'abc'; // ReferenceError 封闭作用域。凡是在声明之前就使用这些变量,就会报错。
   let tmp;
   tmp = 123; //123
}
  1. const
    暂时性死区 √
    重复定义 ×
    提前声明变量 ×
    修改×
    作用域:块级

一般函数 箭头函数 区别

箭头函数是匿名函数,不能new,不能作为构造函数

  1. 参数
    箭头函数不绑定arguments,取而代之用rest参数…解决
function f(a){
	console.log(arguments); //10
}
f(10);

var cfun=(...c)>{ //...c即为rest参数
	console.log(c); //5
}
cfun(5);
  1. this指向
    箭头函数不会创建自己的this,它只会从自己的作用域链的上一层继承this作为自己的 this 值,任何方法都改变不了其指向,如call(), bind(), apply()
    普通函数的this指向调用它的那个对象
        声明式  function fun(){}           this指向,window
        赋值式  var fun = function(){}     this指向,window
        forEach()循环                      this指向,window
        定时器,延时器  setInterval(function(){} , 时间)
                                            this指向,window
        对象中的函数 const obj = {fun:function(){}}
                                            this指向,obj对象
        事件处理函数 标签.addEventListener(事件类型,function(){})
                                            this指向,标签对象   
                                            
箭头函数的this指向,是父级程序的this指向
如果父级程序有this指向,指向向的就是父级程序的this指向
如果父级程序没有this指向(对象,数组是没有this),指向的是window        
  1. apply call bind
    函数.call(参数1,其他参数...)
        立即执行函数,并且改变函数的this指向为参数1表示的内容
        其他参数,是原始函数的实参,多个实参使用逗号间隔
    函数.apply(参数1,[数组参数])
        立即执行函数,并且改变函数的this指向为参数1表示的内容
        数组参数,是原始函数的参数,多个参数以数组的单元的形式存储
    函数.bind(参数1)
        不会立即执行函数,而是生成一个新的函数
        新函数,参数,程序内容,都与原始函数相同
        只是this改变为参数1表示的内容

promise对象 三种状态与链式调用

作用
  1. 处理JavaScript里的异步

  2. 避免回调地狱。

     状态
    

pending、fulfilled、rejected(未决定,履行,拒绝),同一时间只能存在一种状态,且状态一旦改变就不能再变

  1. 初始化,状态:pending

  2. 当调用resolve(成功),状态:pengding=>fulfilled​

  3. 当调用reject(失败),状态:pending=>rejected

     promise的then方法传参
    
let promiseDemo = new Promise((resolve, reject) => {
  // code
  resolve('success')
  // code 
  reject('failed') 
})

promiseDemo.then((result) => {  //成功调用传参('success')
  console.log(result)
}, (result) => {
  console.log(result) //失败调用传参('failed') 
});
//------------把reject函数拿出来做为catch
promiseDemo.then((result) => {
  console.log(result) 成功调用传参('success')
}).catch((result) => {
  console.log(result)
})
使用Promise.resolve()快速获取一个成功状态的promise对象
使用Promise.reject()快速获取一个拒绝状态的promise对象

可以通过Promise.resolve()将一个字符串、数字或者对象等转换成一个成功状态的Promise对象。

let b = Promise.resolve({name:'xiaoming', age:18})
b.then((result) => {
    console.log(result)   // {name:'xiaoming', age:18}
})
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值