本篇文章是js基础练习题第二十天的答案及解析部分,纯题目部分请移步js基础练习题 第20天
正文
1.当使用new
命令时,实际上执行了哪些操作?
2.如果指定
setTimeout(f, 0)
,那么f
会立即执行吗?关于setTimeout
的更多知识,参考MDN|setTimeout。
3.
1 | function f1() { |
f1().then(function(){ return f2(); }).then(console.log)
输出___________,f1().then(function(){ f2(); }).then(console.log)
输出___________,f1().then(f2()).then(console.log)
输出___________,f1().then(f2).then(console.log)
输出___________。
关于Promise
这部分的分析,其实是比较繁琐的。记住Promise.prototype.then
方法返回一个新的promise
, 将以回调的返回值
来resolve
。关于Promise
的更多信息,参考MDN|Promise。
4.使用
Promise
完成图片的加载。编写一个preLoadImg(url)
函数,其中url
参数为图片的路径,当图片加载完成时,提示加载成功,否则提示加载失败。参考代码如下所示:
1 | const preLoadImg = (url) => { |
5.当下列代码执行后,会在控制台依次输出______________________。
1 | setTimeout(() => { |
这道题牵扯到了JS
的事件循环机制。简而言之呢,就是同步任务先执行,然后执行Promise
的then
回调,最后进入下一轮事件循环,执行setTimeout
或者setInterval
的回调。关于事件机制,可参考深入核心,详解事件循环机制。
6.
['1', '1', '1'].map(parseInt)
的返回值为___________。Array.prototype.map(item, index, arr)
函数接收三个参数,即数组项、索引和整个数组。parseInt(str, base)
函数接收两个参数,即要转换的字符串和转换基数。所以上面的代码拆开来就是:
1 | parseInt( |
7.
[typeof null, null instanceof Object]
的结果为___________。typeof null
的结果为null
,是一个特例;对任何基本类型值调用instanceof
操作符,都会返回false
。
8.
[3, 2, 1].reduce(Math.pow)
的结果为___________。相当于(3 ** 2) ** 1
。
说明
- 题目中出现的JS指的是采用ECMAScript 2015及之后标准的JavaScript
答案中,若有错误和需完善的地方,可在下方留言反馈哈~~
查看纯习题版,请点击js基础练习题 第20天