
ES6
笔记
丫呀nice
这个作者很懒,什么都没留下…
展开
-
let,const,var的区别
这里的声明提升存在疑点,涉及到暂存性死区重复定义:只有const不行,会报错let var 可以重复定义 const不可以<body> <input type="text" placeholder="aaa"> <button>发表评论</button> <div></div></body><script> var text=document.querySelec转载 2020-08-18 19:45:07 · 216 阅读 · 0 评论 -
promise总结
1.promise是什么?1.1.1抽象表达promise 是JS中进行异步编程的新的解决方案旧的方案:纯回调形式1.1.2.具体表达从语法来说:promise是一个构造函数从功能来说:promise对象用来封装一个异步操作并可以获取结果1.2状态改变:pending变为resolvedpending变为rejected说明:只有这2种,且一个promise对象只能改变一次无论变为成功还是失败,都会有一个结果数据成功的结果数据一般称为value,失败的结果数据一般称为reason1原创 2020-07-29 16:34:16 · 214 阅读 · 0 评论 -
promise-面试题2
//1 7 2 3 8 4 6 5 0 /* 1 7 宏:[0] 微: [2,8] 取出2 因为resolve()立马执行promise,立刻输出3 1 7 2 3 宏:[0] 微: [8,4,6] 取出8 继续resolve()立马then,输出4,此时返回undefined给外层then,接着执行6 1 7 2 3 8 宏:[0] 微: [4,6] 1 7 2 3 8 4 宏.原创 2020-07-28 11:32:15 · 121 阅读 · 0 评论 -
promise-面试题2
//3 7 4 1 2 5 //同步3 7 4 /* 宏:[5] 微:[1,2] 最后resolve(6) 返回给p 但是不执行输出了 */ const first= ()=>(new Promise((resolve,reject)=>{ console.log(3) let p=new Promise((resolve,reject)=>{ console.log(7.原创 2020-07-28 11:27:58 · 106 阅读 · 0 评论 -
promise-面试题1
//放入宏队列 setTimeout(()=>{ console.log(1) },0) new Promise((resolve)=>{ console.log(2) resolve() }).then(()=>{ console.log(3) }).then(()=>{ console.log(4) }) console.log(5)原创 2020-07-28 11:25:25 · 161 阅读 · 0 评论 -
同步回调函数与异步回调函数
//1.同步回调函数 const arr=[1,2,3]; arr.forEach(item=>{ console.log(item); }) console.log("forEach之后"); //2.异步回调函数 setTimeout(()=>{//异步回调函数,会放入队列中将来执行 console.log("tomout callback()"); },0) console.log("setTi原创 2020-07-28 11:23:25 · 234 阅读 · 1 评论 -
函数对象与实例对象
function Fn(){ } const fn=new Fn()//Fn是构造函数,fn是实例对象 console.log(Fn.prototype);//Fn是函数对象,带了. 才会有方法 Fn.call({});//Fn是函数对象 $("#test");//jquery函数 $.get("/test");//jquery函数对象...原创 2020-07-28 11:21:40 · 168 阅读 · 0 评论 -
async/await
1.async函数函数返回值为 promise对象promise对象的结果由async 函数执行的返回值决定2.await 表达式await 右侧的表达式一般为promise对象 ,但是也可以是其他值如果表达式为promise对象,await返回的是promise成功的值如果表达式 是其他值,直接将此值作为await的返回值3.注意:await 必须写在async 函数中 ,但async函数可以没有await如果await 的promise 失败了,就会抛出异常,需要通过try…catch原创 2020-07-28 11:18:49 · 331 阅读 · 0 评论 -
promise异常传/穿透?中断promise链?
6.promise异常传/穿透?(1)当时有promise的then链式调用时,可以在最后指定失败的回调(2)前面任何操作出了异常,都会传到最后失败的回调中7.中断promise链?(1)当前使用promise的then链式调用时,在中间中断,不再调用后面的回调函数(2)办法:在回调函数中返回一个pendding状态的promise对象 //promise异常传透 new Promise((resolve,reject)=>{ reject(1); }).th原创 2020-07-28 11:11:50 · 936 阅读 · 0 评论 -
promise如何串联多个 操作任务?
promise如何串联多个 操作任务?(1)promise的then()返回一个新的promise,可以变成then()的链式 调用(2) 通过then的链式调用串联多个同步/异步操作输出结果:执行 任务1(异步)任务1的结果: 1执行任务2(同步)任务2的结果: 2执行任务3(异步)任务3的结果: 3 为什么有同步有异步,却按顺序执行? 因为每一个任务都是拿到前一个 的返回结果才执行new Promise((resolve,reject)=>{ s原创 2020-07-28 11:08:51 · 575 阅读 · 0 评论 -
promise.then()返回新的promise的结果状态由什么决定!!!
promise.then()返回新的promise的结果状态由什么决定?(1)简单表达:由 then()指定的回调函数执行的结果决定(2)详细表述:如果抛出异常,新promise变为rejected,reason为抛出的 异常如果返回值是非promise的任意值,新promise变为resolve,value为返回 的值如果返回的是另一个新的promise,此promise的结果会成为新的promise的结果new Promise((resolve,reject)=>{原创 2020-07-28 11:05:15 · 2657 阅读 · 0 评论 -
改变promise状态 和指定回调函数谁先谁后?
3.改变promise状态 和指定回调函数谁先谁后?(1) 都有可能,正常情况下是先指定回调函数再改变状态,但是也可以先改变状态再指定回调函数(2) 如何先改变 状态再指定回调?在执行器中 直接调用resolve()/reject()延迟更长时间才调用then()(3)什么时候才能得到数据?如果先指定回调,当状态发生改变时,回调函数就会调用,得到数据如果先改变转态,那指定 回调时,回调函数就会调用,得到数据.then是同步里面调用 的resolve,reject都是异步函数,怎么验证?在原创 2020-07-28 11:00:17 · 732 阅读 · 0 评论 -
一个promise指定多个成功/失败 回调函数,都会 调用吗?
1.如何改变promise的状态?(1) resolve(value): pending变为resolved(2) rejecte(reason): pending变为rejected(3) 抛出异常:pending变为rejected2.一个promise指定多个成功/失败 回调函数,都会 调用吗?当 promise改变为对应状态 时都会调用const p=new Promise((resolve,reject)=>{ // resolve(1) //原创 2020-07-28 10:49:49 · 491 阅读 · 0 评论 -
promise的API
new Promise 传执行器函数,执行器函数接收resolve,rejectall所有成功才成功,有一个失败就失败race以第一个执行完的为最终结果new Promise((resolve,reject) => { setTimeout(()=>{ //这只能执行一个,要么输出 成功的数据 要么输出 失败的数据 因为promise对象只能改变一次 // resolve("成功的数据")原创 2020-07-28 10:46:38 · 154 阅读 · 0 评论 -
为什么要用promise
1.指定回调函数的方式更加灵活:旧的必须在启动异步任务前指定promise:启动异步任务 =》 返回promise对象 =》 给promise对象绑定回调函数(甚至可以在异步任务结束后指定)2.支持链式调用,可以解决异步回调地狱问题什么是回调地狱?回调函数嵌套调用,外部回调函数异步执行的结果是嵌套的回调函数 执行的条件第二个异步任务是以第一个异步任务为前提,第三个 异步任务是以第二个异步任务为前提回调地狱的缺点? 不便于阅读 / 不便于异常处理解决方案: promise链式调用终极原创 2020-07-28 09:59:10 · 240 阅读 · 0 评论 -
promise的基本使用
//创建一个新的promise对象const p=new Promise((resolve,reject)=>{//执行器函数 同步回调 //2.执行异步操作任务 setTimeout(()=>{ const time=Date.now(); //如果当前 时间偶数代表成功,否则失败 //3.1成功调用resolve(value) if(time%2===0){ resolve("成功的数据,time=原创 2020-07-28 09:55:57 · 79 阅读 · 0 评论 -
promise-常见的内置错误
1.错误的类型:ReferenceError :引用的变量不存在TypeError:数据类型不正确的错误,RangeError数据值不在其所允许的范围内SyntaxError:语法错误2.错误处理捕获错误:try…catch抛出错误:throw error3.错误对象message属性:错误相关信息stack属性:函数调用栈记录信息//1.ReferenceError :引用的变量不存在 console.log(a);//Uncaught ReferenceError: a i原创 2020-07-28 09:54:31 · 354 阅读 · 0 评论 -
JS中Map和ForEach的区别
定义foreEach()方法:针对每一个元素执行提供的函数。map()方法:创建一个新的数组,其中每一个元素由调用数组中的每一个元素执行提供的函数得来。原数组不变区别forEach()方法不会返回执行结果,而是undefined。也就是说,forEach()会修改原来的数组。map()方法会得到一个新的数组并返回,原数组不变。例子//forEach修改原来的数组let arr =[1,2,3,4,5,6]; let foreach=arr.forEach((转载 2020-06-11 11:05:31 · 363 阅读 · 0 评论 -
解决异步回调地狱的方法
异步回调地狱是指代码横向增长(比如在Promise对象里面循环嵌套了多个Promise对象)而不是竖向增长,这样的代码就会显得很复杂而且逻辑会变得混乱,可怕的是会写出强耦合的异步代码,后期修改的时候会相当麻烦了。解决方法:1.用Promise的 .then 写成链式结构实现竖向增长2.使用async await3.使用Generator协程...转载 2020-03-24 13:58:14 · 468 阅读 · 1 评论 -
ES6
Vue等框架与jQuery的区别:jQuery是基于操作dom的库Vue是以数据驱动和组件化开发为核心template 只能有一个根节点ES6:变量函数数组字符串面向对象Promisegenerator模块化1.ES6怎么来的ECMAScript 和 JavaScriptECMA 是标准,JS 是实现ECMAScript 简称 ECMA 或 ES历史版本1...转载 2020-03-18 20:19:28 · 128 阅读 · 0 评论