本篇文章是js基础练习题第十九天的答案及解析部分,纯题目部分请移步js基础练习题 第19天
正文
1.请简述null
与undefined
的区别。
答案:null
表示一个空的对象,转为数值时为0
;undefined
表示一个未定义的原始值,转为数值时为NaN
;undefined == null
的结果为true
。
2.
[NaN].indexOf(NaN)
的返回值为___________,[NaN].includes(NaN)
的返回值为___________。答案:-1
、true
Array.prototype.indexOf(item)
方法执行的是===
(全等)判断;Array.prototype.includes(item)
方法判断的是一个数组是否包含指定的值,如果是则返回true
,否则返回false
。
3.
parseInt(0.0000008)
的返回值为___________,parseInt(0x11, 2)
的返回值为___________。答案:8
、1
parseInt
方法有两个参数,第一个参数为转换时的字符串,若非字符串,则先调用String()
方法转为字符串;第二个参数为转换字符串采用的进制数。默认为十进制。针对上面两个题,0.0000008
转为字符串为"8e-7"
,故结果为8
;0x11
转为字符串,结果为"17"
,由于该字符串采用的二进制,二进制中没有7
,故停止继续转换,结果为1
。
4.
2 ** 3 ** 2
= ___________,{} + {}
= ___________。答案:512
、"[object Object][object Object]"
**
的结合顺序为自右向左结合,即2 ** 3 ** 2 = 2 ** (3 ** 2) = 2 ** 9 = 512
;{} + {}
会调用Object.prototype.toString()
方法,Object.prototype.toString({})
返回"[object Object]"
。
5.请简述
==
与===
的区别。答案:相等运算符(==
)比较两个值是否相等;严格相等运算符(===
)比较它们是否为同一个类型的同一个值。如果两个值不是同一类型,===
直接返回false
,而==
会发生隐式类型转换,再进行比较是否为同一个值。由于==
隐藏的类型转换会带来一些违反直觉的结果,因此建议不要使用==
,最好只使用===
。
6.利用位操作的相关知识,实现两个变量的值的互换。
7.JS
内置了哪几种错误对象(Error
实例),试分别简述之。
JS
定义了五种常见错误对象,如下所示:
SyntaxError
:表示解析代码时发生的语法错误ReferenceError
:引用一个不存在的变量或将值分配给无法分配的对象时发生的错误RangeError
:当值超出有效范围时发生的错误,比如数组长度为负数TypeError
:指变量或参数不是预期类型时发生的错误,比如调用不存在的函数URIError
:URI相关函数的参数不正确时抛出的错误
8.编写一个type
函数,要求其能进行精确的类型判断,如:
1 | type(/abcd/); // regexp |
答案如下所示:
1 | function type(obj) { |
说明
- 题目中出现的JS指的是采用ECMAScript 2015及之后标准的JavaScript
答案中,若有错误和需完善的地方,可在下方留言反馈哈~~
查看纯习题版,请点击js基础练习题 第19天