javascript变量提升

javascript变量提升

1,首先运行以下代码查看结果

var v='Hello World'; 
alert(v); 

var v='Hello World';
(function(){
alert(v);
})()

var v='Hello World'; 
(function(){ 
alert(v); 
var v='I love you'; 
})() 

解析:javascript语言存在函数级作用域(只有函数才会创建新的作用域)。变量提升,顾名思义就是把变量提升到函数的top位置,但注意变量提升只是针对声明的提升,并不会对赋值就行提升,

故以上代码等价于:(由于v只声明未赋值,所以alert出underfined)

var v = “Hello  World”;

(function() {

var v;

alert(v);

v="I love you";

}

二:函数提升

函数提升,顾名思义就是将整个函数提到前面去。在js中函数有两种写法:一:函数表达式;二:函数声明式;需要注意的是只有函数声明式才能被提升。

1,函数声明式(可以被提升)

function myTest(){ 
foo(); 
function foo(){ 
alert("我来自 foo"); 


myTest(); 

2,函数表达式(不能被提升,报错  foo is not a function

function myTest(){ 
foo(); 
var foo =function foo(){ 
alert("我来自 foo"); 


myTest(); 

原文地址:https://www.cnblogs.com/shmily-code/p/7804580.html