论坛首页 Web前端技术论坛

关于js解析执行有趣的事

浏览 13281 次
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-06-21  
在函数执行的过程中,每遇到一个变量,都会经历一次标识符解析过程,决定从哪里获取或存储数据。这个过程需要搜索运行期上下文的作用域链,查找同名的标识符。搜索从头部开始,如果找到就用这个标识符对应的变量;如果没有找到,继续搜索作用域链中下一个对象,直到找到为止。

function b() {   
    a = 10;   
    return;   
    function a() {}   
}   

函数b的运行期上下文中已经存在了一个变量a,即function a(){},因此当搜索a的时候其实是搜索到了函数a,这样外面的a就被忽略了.
0 请登录后投票
   发表时间:2012-06-21   最后修改:2012-06-21

解释的真麻烦

给你们看下标准的写法

真正的代码是这样执行的 所以不要乱写一些非标准的代码  很容易迷惑人的

 

var foo = 1;  
function bar() {  
    var foo;
    if (!foo) {  
        foo = 10;  
    }  
    alert(foo);  
}  
bar();  


var a = 1;  
function b() {  
    var a;
    a = 10;  
    return; 
    a  = function(){};  
}
b();
alert(a);
 
0 请登录后投票
   发表时间:2012-06-21  
弱弱的问一下,这个是javascript的闭包吗?
0 请登录后投票
   发表时间:2012-06-21  
kxscr 写道

解释的真麻烦

给你们看下标准的写法

真正的代码是这样执行的 所以不要乱写一些非标准的代码  很容易迷惑人的

 

 

var foo = 1;  
function bar() {  
    var foo;
    if (!foo) {  
        foo = 10;  
    }  
    alert(foo);  
}  
bar();  


var a = 1;  
function b() {  
    var a;
    a = 10;  
    return; 
    a  = function(){};  
}
b();
alert(a);
 

写这些代码目的不是迷惑人,是让人更好理解JS的执行原理,当然啦,实际项目中也不会出现这样的代码吧

0 请登录后投票
   发表时间:2012-06-21  
蒹葭从风 写道
弱弱的问一下,这个是javascript的闭包吗?

这个不是闭包
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics