JavaScript基本语法题

188 阅读2分钟

直接进入主题

请问下面俩个函数调用后会是什么值?

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上测试,因为这个浏览器会默认把它当作对象。)