每日一题 2020-11-22

以下函数内部会打印出什么?

function test () {
	console.log(a);
	console.log(b);
	console.log(c);
	console.log(d);

	if (false) {
		var c = function  () {};
		var a = 10;
	}

	if (true) {
		var d = function  () {};
		var b = 20;
	}

	console.log(a);
	console.log(b);
	console.log(c);
	console.log(d);
}

test()

答案: undefined undefined undefined undefined undefined 20 undefined function (){}

解析:
函数执行前会先寻找 变量申明和函数申明 并对其进行提升到函数顶部(仅限使用 var 申明)
false 不会执行,所以 ac 还是为 undefined

function test () {
	var c = undefined
	var a = undefined
	var d = undefined
	var b = undefined
	console.log(a);
	console.log(b);
	console.log(c);
	console.log(d);

	if (false) {
		c = function  () {};
		a = 10;
	}

	if (true) {
		d = function  () {};
		b = 20;
	}

	console.log(a);
	console.log(b);
	console.log(c);
	console.log(d);
}

test()

注: JS中一定为假的值有且仅有如下

  • undefined
  • null
  • ''
  • 0 ( +0 || -0 )
  • false
  • NaN
posted @ 2020-11-22 23:54  pandajs163  阅读(58)  评论(0)    收藏  举报