直接进入主题
请问下面俩个函数调用后会是什么值?
function fn(){
return 3
}
fn()
function fn1(){
return
3
}
fn1()
答案是: 3 、 undefined
解释: 看似俩个函数是一样的,其实在第二个函数fn1中,return后面接的是一个回车,大家都知道,JavaScript是一行一行执行代码的,所以此时这个函数会执行俩条语句,一个是return,一个是3。这时JavaScript就会默认在return后面加上 undefined
.
关于if语句的题
请问上段代码会打印出什么?
var a =1
if(a===2)
console.log('a')
console.log('a等于2')
答案: 只会打印出 a等于2
解释: 因为虽然if语句省略了{},但if无形中只会包含第一个语句,也就是第一行的console.log('2')。因此 a===2 是不满足的, 因此只会打印出 a等于2
关于while语句的题
请问下面会出现什么情况?
var a =0.1
while(a !== 1){
console.log('退出')
a =a+0.1
}
答案: 不会打印出退出
这俩个字,而且还会陷入死循环。
解释: 这个题虽然是用while语句来写的,但考察的是浮点数问题, 你可以在你的控制台中 写 var a = 0.1, 然后不停的 a =a+0.1 回车,就会发现它会精妙的跳过1这个整数,原因就在于浮点数运算精度的问题。
关于函数调用的题
请问我打印a的值是多少?
var a = 1
function fn(){
console.log(a)
}
答案: 不确定, 因为我不知道什么时候执行fn()
解释: 就像答案所说, 只要调用fn,才会执行此函数, 如果我在此代码下面 把a的值换了, 再调用a呢,这样值就会改变, 因此我们不确定调用fn之前,a的值是多少。
关于label的题
请问下面俩段代码表示是什么?
{
foo : 1
}
var a = {
foo : 1
}
答案: 第一段表示是 label 值为1,第二段是对象。 (你可以在控制台写一下就知道为什么了,但不要Chrome上测试,因为这个浏览器会默认把它当作对象。)