本篇文章是js基础练习题第二十二天的答案及解析部分,纯题目部分请移步js基础练习题 第22天
正文
1.[] == false
= ___________,[1] == true
= ___________,[1, 2] == true
= ___________,[0] == false
= ___________。
隐式类型转换,会将数组和布尔值分别转换为Number
类型进行比较。Number([]) = 0
,Number([1]) = 1
,Number([1, 2]) = NaN
。
2.
[] == []
= ___________,{} == {}
= ___________,"" == ""
= ___________。对于是引用类型的变量,其总是不相等的,如Array
、Object
、RegExp
等。
3.
'2' + 3
= ___________,'2' - 3
= ___________。+
用在字符串中,其为拼接操作,即将Number
转为String
。而-
是纯粹的算术运算符,其会将String
转为Number
。
4.
1 + - + + + - + 1
= ___________,1+-+++-+1
= ___________。第一个表达式,按照从右向左的顺序计算即可,即1+(-(+(+(+(-(+1))))))
;第二个表达式,错误的地方在于类似于1++
这样的操作,自增/自减运算符不能作用在非变量上。
5.
Number.MIN_VALUE > 0
= ___________,Number.NaN > 0
= ___________。Number.MIN_VALUE
是最小的大于0的值,Number.MIN_VALUE = 5e-324
,NaN
是一个特殊的值,其与任何值都不相等。
6.
1 < 2 < 3
= ___________,3 < 2 < 1
= ___________。隐式转换,(1 < 2) < 3
即true < 3
即 1 < 3
,返回true
;(3 < 2) < 1
即false < 3
即 0 < 3
,返回true
。
7.
1 == [1]
= ___________,2 == [[2]]
= ___________,0 == [[[0]]]
= ___________。隐式转换。
8.
6.toString()
= ___________,6..toString()
= ___________,.6.toString()
= ___________。整数不能调用toString
方法,而小数可以,不管它有没有省略小数的前置或后置0
。
9.
/123/ == /123/
= ___________,/123/ === /123/
= ___________。任意两个正则表达式都是不相等的。
10.
[1, 5] > [5]
= ___________,[5] == [5]
= ___________。对于第一个表达式,相当于[1, 5].join("") > [5].join("")
即"15" > "5"
,由于采用的Unicode
编码,故返回false
。
11.
{}.prototype == Object.prototype
= ___________,Object.getPrototypeOf({}) == Object.prototype
= ___________。只有function
具有prototype
属性。
12.
1 | function f() {} |
a == b
= ___________。Object.getPrototypeOf(f) = Function.prototype
。
说明
题目中出现的JS指的是采用ECMAScript 2015及之后标准的JavaScript
答案中,若有错误和需完善的地方,可在下方留言反馈哈~~
查看纯习题版,请点击js基础练习题 第22天
本文的大部分题目原型取自于JavaScript Puzzlers!。大家可前往查看原题,并且还可以在线做题,查看自己的完成情况。