以下哪些语句触发了隐式的类型转换?
-
parseInt(12.34, 10)
-
0 ? 1 : 2
-
2e1 * 0xaa
-
1 + '1'
正确答案: A B D 你的答案: C D (错误)
A. parseInt就是先把数字先转字符串,取消小数点之后的数值之后再返回变成数字类型
B. 三元运算符,会判断 ? 前的表达式为true或者false。这里把0转化为false了
D. 不用说都知道
至于C选项中的e表示科学计数法这里的意思是
2 ∗ 1 0 1 2 * 10 ^ 1 2∗101
以下js表达式返回false的是()
-
1==true
-
“”==false
-
false==null
-
null==undefined
正确答案: C 你的答案: D (错误)
死记硬背就完事了
类似于 false == ‘false’ 结果还是false
(function() {
var a = b = 5;
})();
console.log(b);
console.log(a);
上面的输出结果:
-
5,5
-
undefined,undefined
-
5,undefined
-
5,Uncaught ReferenceError: a is not defined
正确答案: D 你的答案: A (错误)
var a=b=5 相当于 var a=b; b=5 然后b为全局变量,所以可以被外层方法获取,但a是局部变量无法被外层方法获取。
有var d = new Date(‘2018-05-09’),可以设置为6月份的操作是?()
-
d.setMonth(7);
-
d.setMonth(6);
-
d.setMonth(5);
-
d.setDate(40);
正确答案: C D 你的答案: B D (错误)
setMonth方法 0—11对应 1—12月
setDate方法如果超过当月日期的话会跑到下一个月,0 为上一个月的最后一天, -1 为上一个月最后一天之前的一天
以下代码执行后,console 的输出是?
let x = 10;
let foo = () => {
console.log(x);
let x = 20;
x++;
}
foo();
-
抛出 ReferenceError
-
10
-
20
-
21
正确答案: A 你的答案: B (错误)
let不会变量提升,在这里,如果没有
let x = 20;
,或者把console.log(x);
放到let x = 20;
下面,都是没有问题的,程序一切正常运行。在上面例子里面先在外面声明,在函数内输出x再声明,必报错。这其实会导致暂时性死区的问题。
暂时性死区的本质就是,只要一进入当前作用域,所要使用的变量就已经存在了,但是不可获取,只有等到声明变量的那一行代码出现,才可以获取和使用该变量。 ----- 官方原话
简单点就是说一个变量在外面定义了,又在里面定义了,在里面这个变量定义之前,是不可以使用它的
let a = 10 { // 绝对不可以在这里使用 let a = 15 // 可以在这后面使用 }
在浏览器控制台执行以下代码,输入的结果是()
function test() {
var n = 4399
function add() {
n++
console.log(n)
}
return {n, add}
}
var result = test()
var result2 = test()
result.add()
result.add()
console.log(result.n)
result2.add()
-
4400 4401 4399 4400
-
4400 4401 4401 4402
-
4400 4400 4399 4400
-
4400 4401 4399 4402
-
4400 4401 4401 4400
正确答案: A 你的答案: E (错误)
重点就第三个空进行讲解,外层变量n与add方法内变量n是俩相互分割的,两者之间毫无关系。如果把add方法内的n++ 改成this.n++然后把打印的方法内的n也换成this.n的话,选择E是完全正确的。