本篇文章是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天

