函数提升与变量提升

示例一:

console.log(a);    // f a() {console.log(10)}
console.log(a());    // undefined
var a = 3;

function a() {
  console.log(10)  // 10
}
console.log(a)   // 3
a = 6;
console.log(a());  //a is not a function;

执行原理分析:

var a = function() {
	console.log(10)
}
var a
console.log(a)
console.log(a())

a = 3
console.log(a)
a = 6
console.log(a())

总结

  1. 函数提升比变量提升的优先级要高,且不会被变量声明覆盖,但是会被变量赋值之后覆盖。
  2. console.log函数,如函数体为console.log,则输出undefined

示例二:

function a() {}
var a;
console.log(typeof a)  // function

验证了总结中的第一条知识点

你可能感兴趣的:(JavaScript,面试题)