由于浏览器的机制
在写入代码js时
浏览器运行时,会有预解析的存在 可分为两种
1.一个是var 的申明
2.另一个是function的申明(大家可以直接 f12,在复制代码到控制台进行验证)
例1
fun1();
function fun1(){
var num=10;
console.log(num);
}
由于预解析的存在使得fun1() 无论放在哪里,代码的格式始终会将function的代码提前创建,
10
例2
var 的预解析
fun1();
function fun1(){
console.log(num);
var num=10;
}
由于var 的预解析作用使得 var num; 会被提前声明,但并不会赋值如
fun1();
function fun1(){
var num;
console.log(num);
num=10;
}
故结果为;undefined
例3
var name=20;
function fun1(){
console.log(num);
var num=10;
}
fun1();
结果还是undefined
总结一下:
如果在函数中发现输出在var 申明之前 结果一定是undefined;
在函数的调用的位置与函数创建的位置无关;