最近刷面试题遇到了一些比较有意思的题目,做个记录(题目均来源于牛客网,解析均是本人的理解,有任何问题欢迎在评论区指出)
Q1:请问以下两次检测对象constructor是否拥有属性名1的结果分别是什么?
1 in Object(1.0).constructor;
Number[1] = 123;
1 in Object(1.0).constructor;
A:false、true
解析:
首先可以认识一下 "in" :用于检查对象(数组)及其原型链中是否含有某键值,如
const arr = [0,2]
1 in arr // true
这里表示的是arr这个数组中存在 1 这个键值,即arr[1]
回归正题:Object(1.0) 相当于 new Number(1.0) ,new Number(1.0).constructor就拿到了Number构造函数,此时Number上还没有 1 这个属性,所以使用 in 返回false,而下一步中增加了这个属性,所以返回true
Q2:下面这段程序的显示结果是?
var x = new Boolean(false);
if (x) {
alert('hi');
}
var y = Boolean(0);
if (y) {
alert('hello');
}
A:hi
解析:
Boolean(0)返回一个布尔类型的false
而new Boolean(false)返回一个布尔对象
Q3:以下哪些对象是Javascript内置的可迭代对象?
Array Map String Object
A:Array Map Stri