javascript中作用域和变量提升

留给中国队的时间已经不多了。
“function函数”是一等公民!`编译阶段`,会把定义式的函数优先执行,也会把所有var变量创建,默认值为undefined,以提高程序的执行效率! 总结:当JavaScript引擎解析脚本时,它会在预编译期对所有声明的变量和函数进行处理!并且是先预声明变量,再预定义函数!

变量提升

1
2
3
4
5
var v='Hello World';
(function(){
alert(v);
var v='I love you';
})()

提示说“undefined”

函数提升

函数声明方式提升【成功】

1
2
3
4
5
6
7
function myTest(){
foo();
function foo(){
alert("我来自 foo");
}
}
myTest();

函数表达式方式提升【失败】

1
2
3
4
5
6
7
function myTest(){
foo();
var foo =function foo(){
alert("我来自 foo");
}
}
myTest();