JS 面试题

    var str = "global"; //AO1  AO1.str
    function t(age){
        console.log(str); // undefined
        var str = "locale";
        console.log(str); // locale
在执行JS function之前会进行《预编译》,形成AO对象:

* 1.分析函数的参数:
   如果没有参数的话,AO对象上没有任何属性
   Ao.age = undefined

* 2.分析函数的变量声明:
  AO.str = undefined

* 3.分析函数的函数声明表达式:
  
  AO.sum = functioon(){}


    function t(age) {
        console.log(age); // function age(){}
        var age = 99;
        console.log(age); // 99
        function age() {
        }

        console.log(age); // 99
    }
    t(5);

// 预编译:activeobject  AO
* 1.分析函数参数:
AO.age = 5

* 2.分析函数变量:
如果AO上有值,则不做处理,没有,AO加上
AO.age = 5

* 3.函数声明表达式
AO.age = function(){}


函数变量的作用域:
  变量的作用域是在声明时决定的而不是调用执行时决定。
posted @ 2017-04-24 17:15  Vincen_shen  阅读(89)  评论(0)    收藏  举报