Javascript中变量声明的提升

对于所有的变量,无论在函数体的何处进行声明,都会在后台被提升到函数的顶部。

1.对于非函数变量

var str = 'hello world'; (function() { console.log(str); //undefined var str = "hello javascript"; })();

PS: 只提升变量的声明,并不会把赋值也提升上来,
所以在声明变量时最好在相应作用域的顶部声明并赋值

2.函数提升

foo(); //hello world console.log(bar); //undifined bar(); //error:bar is not a function function foo() { //函数声明和定义都会被提升 console.log("hello world"); } var bar = function() { //函数表达式只有声明会被提升,但是定义不被提升 console.log("hello javascript"); };

你可能感兴趣的:(Javascript中变量声明的提升)