题目1:![](https://i-blog.csdnimg.cn/blog_migrate/dba6577a1e1b9c242e3bc2677a3ac16c.png)
【解析】
ES6原生提供了Promise对象,表示未来将要发生的事件,用来传递异步操作的消息
then 接收两个回调函数并返回一个新的 promise 对象,这两个回调函数分别对应成功回调 onFullfilled 和失败回调 onRejected,这两个回调函数接收 promise 的返回值;(分别向doneList和failList中添加回调函数)
always (finally) 接收一个回调函数并返回一个新的 promise 对象,回调函数在上一个 promise 解析完成之后调用,也就是不管前面是 then 还是 catch 被调用了,它都会被调用,该回调函数不会接收参数。(添加一个无论成功还是失败都会调用的回调函数)
题目2:
【解析】
函数只有两种声明方式:
- 普通函数声明 function foo() {}
- Function构造函数声明 var foo = new Function()
题目3:
【解析】
slice() 方法以新的数组对象,返回数组中被选中的元素。
slice() 方法选择从给定的 start 参数开始的元素,并在给定的 end 参数处结束,但不包括。
题目4:
【解析】
暂时死区问题
虽然let语句不像var语句会产生hoisting(变量提升),JavaScript引擎也会意识到在后边的let定义,只是不支持在let声明语句之前引用该变量而已。所以,只要在同一个block中,let是在后边定义的,就不能在之前引用该变量。与此同时,也不能再去取嵌套外层的值了(x=1)
题目5:
【解析】
JavaScript RegExp 对象有 3 个方法:test()、exec() 和 compile()。
- test() 方法用来检测一个字符串是否匹配某个正则表达式,如果匹配成功,返回 true ,否则返回 false;
- exec() 方法用来检索字符串中与正则表达式匹配的值。exec() 方法返回一个数组,其中存放匹配的结果。如果未找到匹配的值,则返回 null;
- compile() 方法可以在脚本执行过程中编译正则表达式,也可以改变已有表达式
而match是支持正则表达式的String对象的方法
题目6:
【解析】
A是失去焦点
文本域支持的事件主要有:tabindex, accesskey, onfocus, onblur, onselect, onchange,
onclick, ondblclick, onmousedown, onmouseup, onmouseover,
onmousemove, onmouseout, onkeypress, onkeydown, onkeyup
题目7:
【解析】
D 没有这个事件
题目8:
【解析】
^ : 匹配字符串的开头;
$ : 匹配字符串的结尾;
* ; 出现零次到多次;
+ :出现一次到多次;
?: 出现零次或一次;
. : 除了\n以外的任意字符
{n} : 出现n次;
{n,m}: 出现n到m次;
{n,}: 出现n次到多次
题目9:
【解析】
JavaScript内部,所有数字都是以64位浮点数形式储存,即使整数也是如此
题目10:
【解析】
1.默认绑定 2.隐式绑定 3.显式绑定 4.new绑定)
A. 默认绑定,指向window
B. new绑定,指向new创建的对象
C. 以为是隐式绑定指向o?用了箭头函数哦,所以还是window
D. 默认绑定,指向window
不懂this绑定的看下文,或者一句话总结:谁调用this,this指向谁
- fn() 光秃秃的,默认绑定,指向this,无论在哪里调用都是
实际上是window.fn() window调用,指向window - obj.fn() 隐式绑定,指向obj,obj在调用
- call()、apply()、bind 显式绑定,要指向谁就写在()里面
- new fn() new绑定,指向new创建的对象
默认绑定
只要是 fn() 这种孤单单的函数执行的 this都是默认绑定,指向window,无论这个fn()在哪里,被嵌套多少层都是指向window
A.定时器1秒后 执行函数 function(){...} 就是fn()形式,默认绑定指向window
同理D也是
主要问题就是C:不细看以为是指向o,但这里用了箭头函数,箭头函数没有自己的this,会去找外层的this当做自己的this,因此还是指向window。
new绑定
new一个对象所作的四件事情
- 新建一个对象
- 把this的指向指向这个对象
- 执行构造函数内的代码
- 返回这个新对象