首页 > Web开发 > 详细

读书笔记-你不知道的JS上

时间:2017-02-26 14:06:24      阅读:221      评论:0      收藏:0      [点我收藏+]

JS引擎

 

编译与执行

  Javascript引擎会在词法分析和代码生成阶段对运行性能进行优化,包含对冗余元素进行优化(例如对语句在不影响结果的情况下进行重新组合)。

  对于Javascript来说,大部分情况下编译发生在代码执行前的很短时间内,涉及的概念有引擎、编译器、作用域。

  变量声明例如var a = 2这条表达式,编译阶段会先查询作用域是否有同名变量,如果有就忽略声明(仅仅忽略var的声明),继续编译。如果没有,会在当前作用域的变量集合中创建一个变量,命名为a。

    {
        //编译阶段找不到a 执行var a
        var a = 1;
        //运行阶段执行 a = 1
        console.log(a); //1
        //编译阶段找到了变量a 忽略此条语句
        var a = 2;
        //运行阶段执行 a = 2
        console.log(a); //2
    }

 

LHS查询与RHS查询

  当变量被使用时,会进行查询操作,例如赋值操作a = 1是LHS查询,另外一种称为RHS查询。

  简单理解就是,对于赋值操作(包括隐性的)为LHS,作为变量进行引用时时RHS查询。

    {
        //赋值操作 LHS查询
        var a = 1;
        function fn(a) {
            //进入函数体存在一个隐性的a = 2操作
            //log使用RHS查询
            console.log(a);
        }
        //函数调用发生RHS查询 2作为引用传入
        fn(2);
    }

 

作用域嵌套  

  一个块或函数嵌套在另一个块或函数中时,就会形成作用域嵌套,在当前作用域无法找到某个变量时,就会在外层作用域继续查找,直到找到该变量;或者没找到,抛出一个错误,查询停止。

读书笔记-你不知道的JS上

原文:http://www.cnblogs.com/QH-Jimmy/p/6444185.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!