15道题检验你的js知识,选择题,填空。(持续更新)答案

1,723 阅读2分钟

题目在这里,请点击跳转 题目

1. A

使用点语法的话,mouse 没有 bird 这个 key,这也就意味着 mouse.bird 是 undefined。然后当我们使用点语法 mouse.bird.size 时,因为 mouse.bird 是 undefined,这也就变成了 undefined.size。这个行为是无效的,并且会抛出一个错误类似 Cannot read property "size" of undefined

2.B

对象的键被自动转换为字符串。我们试图将一个对象 b 设置为对象 a 的键,且相应的值为 123

然而,当字符串化一个对象时,它会变成 "[object Object]"。因此这里说的是,a["[object Object]"] = 123。然后,我们再一次做了同样的事情,c 是另外一个对象,这里也有隐式字符串化,于是,a["[object Object]"] = 456

然后,我们打印 a[b],也就是 a["[object Object]"]。之前刚设置为 456,因此返回的是 456

3.A

删除一个不存在的属性,delete不报错,而且返回true。

4.B

obj1 = obj 引用的是栈中保存的地址,一个改变,另外一个也会改变。当obj1 = {} 已经对ob1 重新赋值了,开辟了一个新的内存空间,和obj已经没有任何关联。

4.1 C

如果你有两个名称相同的键,则键会被替换掉。它仍然位于第一个键出现的位置,但是值是最后出现那个键的值。

5.

8种数据类型 number string boolean undefined null object symbol Bigint 
NaN === NaN  // false
typeof NaN   // number
typeof null  // object
typeof typeof 1 // string
null == undefined //true
""== 0  // true
1 + null // 1
'1' + null // 1null
Number(null) // 0
Number("")  // 0
[]==0  // true
[]==![] // true
[]==false // true

解析 请参考我的这篇文章 js数据类型知多少

6.C

new Number() 是一个内建的函数构造器。虽然它看着像是一个 number,但它实际上并不是一个真实的 number:它有一堆额外的功能并且它是一个对象。

当我们使用 == 操作符时,它只会检查两者是否拥有相同的。因为它们的值都是 3,因此返回 true

然后,当我们使用 === 操作符时,两者的值以及类型都应该是相同的。new Number() 是一个对象而不是 number,因此返回 false

7. A

解析 请参考文章

8. A

解析 请参考文章

9. A

解析 请参考文章

10 B

解析 请参考文章

11.C

解析 请参考文章

12.D

解析 请参考文章

13

console.log(b.n);  // 1
console.log(b.m);  // undefined
console.log(c.n);  // 2
console.log(c.m);  // 3

解析 请参考文章

14

chimmy

15

student.doSth(); // 'chimmy'
student.doSth2(); // 'chimmy'
student.doSth3(); // 'jimmy'