Javascript Hoisting( 变量提升)

来源:互联网 发布:学白话大全软件 编辑:程序博客网 时间:2024/06/05 18:43

Javascript Hoisting( 变量提升)

先理解Javascript Hoisting的概念。

Javascript Hoisting:In javascript, every variable declaration is hoisted to the top of its declaration context.

我的理解就是在Javascript语言中,变量的声明(注意不包含变量初始化声明var name,初始化就是赋值 name=2)会被提升(置顶)到声明所在的上下文,也就是说,在变量的作用域内,不管变量在何处声明,都会被提升到作用域的顶部,但是变量初始化的顺序不变。


 var myvar = '变量值';     (function() {       console.log(myvar); // undefined       var myvar = '内部变量值';      })(); 

输出的的是undefined。


因为它等价于

 var myvar = '变量值';     (function() { 
       var myvar;      console.log(myvar); // undefined        myvar = '内部变量值';      })(); 

在函数内把定义的变量的声明放在最开始的位置了。当时只声明没有定义,所以是undefined。


1     //测试代码----------------------2     var myvar = '变量值'; 3     (function() { 4       console.log(myvar); // ?5       myvar = '内部变量值'; 6     })();

输出的是变量值




再看两个例子

var foo = 1;function bar() {if (!foo) {var foo = 10;}alert(foo);}bar();
输出的是10.


var a = 1;function b() {a = 10;
         alert(a)--------输出的是10return;function a() {}}b();alert(a);-----输出的是1
输出的是1



原创粉丝点击