JavaScript变量声明提升
一、什么是声明提升
在JavaScript中,变量和函数的声明都将被提升到函数的最顶部。
变量可以在使用后声明,也就是变量可以先使用后声明。
声明提升:即变量和函数会被解释器提升到方法体的最顶部。
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>javascript 声明提升</title> 6 </head> 7 <body> 8 <p id="demo"></p> 9 <script> 10 x = 5 11 elem = document.getElementById("demo"); //查找元素 12 elem.innerHTML=x; //在原素显示 13 var x //声明变量x 14 </script> 15 </body> 16 </html>
JavaScript初始化变量不会提升
JavaScript只有声明的变量会提升,初始化的变量不会提升
eg:
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>javascript 初始化变量</title> 6 </head> 7 <body> 8 <p id="demo"></p> 9 <script> 10 var x=5; 11 var y=6; 12 elem = document.getElementById("demo"); 13 elem.innerHTML=x+" "+y; //显示5 6 14 </script> 15 </body> 16 </html>
如果在后面声明y变量,如:
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>javascript 初始化变量</title> 6 </head> 7 <body> 8 <p id="demo"></p> 9 <script> 10 var x=5; 11 elem = document.getElementById("demo"); 12 elem.innerHTML="x is "+x+" "+"y is "+y; //显示x is 5 y is undefined 13 var y=6; 14 </script> 15 </body> 16 </html>
上述代码y输出为undefined,是因为变量声明var y提升了,但是初始化y=6并不会被提升,所以输出是,y是一个未定义的变量。
上述代码中的var y=6与在顶部声明var y,在底部在声明变量 y=6是一样的;
那么为了避免出现类似的问题,我们通常在每个作用域的开始声明这些变量。
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号