首页 相关文章 Javascript的eval、with

Javascript的eval、with

  javascript的作用域是词法作用域(lexical scope or static scope),也就是说作用域链在定义的时候就确定了。也提到eval、with会扰乱作用域链(dynamic scope)。

  eval

  IE下:运行eval()会受当前作用域限制,运行execScript()则无视当前作用域,直接在全局作用域下执行。

  Firefox下:eval()和window.eval()效果不一样,这很奇怪,毕竟FF下,eval==window.eval。前者会受当前作用域限制,后者无视当前作用域,在全局作用域下执行(相当于IE的execScript())。

  有人写了一篇比较通俗的,参考这篇文章

  with

  with会暂时修改作用域链。

script
function a(){
    with (b) {
        ...
    }
}a();

  /script函数a在定义的时候,就确定了a的作用域链,我们姑且认为这条链的最顶端是全局对象window。

  当函数a被执行的时候,javascri...[ 查看全文 ]

2016-02-19 标签:

Javascript的eval、with的相关文章

手机页面
收藏网站 回到头部