javascript变量提升

Posted shmily-代码君

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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(); 

 

以上是关于javascript变量提升的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript变量提升与函数提升

JavaScript变量提升

JavaScript 变量和函数提升问题总结

JavaScript系列文章:变量提升和函数提升

JavaScript变量提升

JavaScript 变量提升,函数提升