1.下列window方法中,可以显示对话框的一项是(C)
A: confirm()
B:alert()
C:prompt()
d:open()
解析:
confirm()是弹出判断对话框;
alert()是弹窗;
prompt()显示对话框;
open()是打开新的页面;
2.执行以下程序,下列说法中,正确的是(A)
var arr = new Array(3); ...①
arr[0] = 1;
arr.b = 0;
console.log(arr.length); ...②
arr.forEach(value=>{
console.log(value); ...③
})
for(var i in arr){
console.log(arr[i]); ...④
}
A:①式创建一个长度为3的数组
B:②式输出结果为4
C:③式输出结果为1 0
D:④式输出结果为1
解析:
var arr = new Array(3); ...① //结果是【empty ,empty ,empty 】
arr[0] = 1; //结果是【1,empty ,empty 】
arr.b = 0; //结果是【1,empty ,empty ,b:0】
//通过点操作符(.)添加的属性和length属性处于同一层级,不会影响length的值。
console.log(arr.length); ...② //结果是3
arr.forEach(value=>{
console.log(value); ...③ //结果是1 ,因为此时遍历的是【1,empty ,empty】
}) //通过点操作符(.)添加的属性可以用for...in...循环遍历,但不能用foreach循环遍历。
for(var i in arr){
console.log(arr[i]); ...④ //结果是0 ,因为此时遍历的是【b:0】
} //通过点操作符(.)添加的属性可以用for...in...循环遍历,但不能用foreach循环遍历。
注意:
通过点操作符(.)添加的可以用 forin 循环遍历,但不能用 foreach 循环遍历。而且添加的属性和length属性处于同一层级,不会影响length的值。
3.执行以下程序,输出结果为(C)
function
a(){
console.log(
this
);
}
a.call(
null
);
A:document
B:null
C:window
D:a
E:undefined
解析:
call继承,对象冒充,因为传入是null或者undefind和没传一样,所以还是全局的window
4.执行以下程序,输出结果为(D)
let num = (
function
(x){
delete
x;
return
x;})(1);
console.log(num);
A:抛出异常
B:null
C:undefined
D:1
解析:
delete只能删除对象的属性。 如果是window.x ,就可以使用delete删除。
不能删除变量和原型链中的变量。
5.在下列Promise所提供的方法中,用来向成功或者失败的回调函数队列中添加回调函数的是( D)
A:done
B:fail
C:always
D:then
解析:
then 接收两个回调函数并返回一个新的 promise 对象,这两个回调函数分别对应成功回调 onFullfilled 和失败回调 onRejected,这两个回调函数接收 promise 的返回值;
always (finally) 接收一个回调函数并返回一个新的 promise 对象,回调函数在上一个 promise 解析完成之后调用,也就是不管前面是 then 还是 catch 被调用了,它都会被调用,该回调函数不会接收参数。
6.下列逻辑表达式的结果为false的是(A)
A:NaN == NaN
B:null == undefined
C:'' == 0
D:true == 1
解析:
NaN == NaN // false
Object.is(NaN,NaN) // true
同一个NaN是相等的,判断两个NaN相等要用Object.is() 之前不相等是因为JS的设计有误,现在已经有方法可以判断了
扩展:
== 会进行类型转换,值相同即为true
=== 不会进行类型转换,类型和值都相同的情况即为true
Object.is()
===
和Object.is()
的区别在于对NaN
和带符号的0
的处理:NaN === NaN // false
+0 === -0 // true
-0 === +0 // true
Object.is(NaN, NaN) // true
Object.is(+0, -0) // false
Object.is(-0, +0) // false
Object.is('foo'
,
'foo'
);
// true
Object.is(window, window); // true
Object.is('foo', 'bar'
);
// false
Object.is([], []); // false
var
foo = { a: 1 };