console.log(global); //undifined
var global="222";
console.log(global); //222
f() {
console.log(a); //undifined
var a="111";
console.log(a); //111
}
f();
之所以会是以上打印的结果,是由于js的变量提升,实际上上面的代码是按照以下来执行的:
var global; //变量提升,全局作用域范围内,此时只是声明,并没有赋值
console.log(global); //undifined
var global="222"; //此时才进行赋值
console.log(global); //打印变量上面赋的值
f() {
var a;//先进行变量提升,函数作用域范围内
console.log(a); //undifined
var a="111";
console.log(a); //111
}
f();
console.log(f1); //function f1() {}
console.log(f2); //undifined
function f1() {} //函数声明式
var f2=function () {}//函数赋值式
之所以会有这样的输出结果,正是由于js中的函数提升起到了效果。
function f1() {} //函数提升,整个代码块提升到文件的最开始
console.log(f1);
var f2=function(){}
原文:https://www.cnblogs.com/gesh-code/p/14119730.html