桂林一枝花 发表于 2017-1-11 23:31:06

面试题知识点-作用域

其实这个也是关于作用域的理解,和上一篇一样。主要是加深理解
/**
* http://www.flvcd.com/
*.--,       .--,
* ( (\.---./) )
*'.__/o   o\__.'
*   {=^=}
*      >-<
*   /       \
*    //       \\
*   //|   .   |\\
*   "'\       /'"_.-~^`'-.
*      \_/--'         `
*    ___)( )(___
*   (((__) (__)))    高山仰止,景行行止.虽不能至,心向往之。
*/
                var a = 10;
      function aa(){//step-4
            alert(a);//step-5
      }
      function bb(){//step-2
            var a = 20;
            aa();//step-3
      }
      bb();//step-1



主要注意的是:aa()的函数作用域是在全局,那么很自然的他的上级作用域也是全局。只不过是从bb()入口进去而已。
下面介绍一些干货:
关于销毁问题:
1、全局作用域只有在关闭页面的时候才会销毁
2、函数对应的堆内存在没有变量引用的时候才会销毁
3、一般情况下,我们函数执行完成,形成的私有作用域就会自己销毁。例如函数里面的变量就会销毁的。立即执行函数也是。
4、函数执行形成一个私有的作用域,在这个作用域外面有东西占用了作用域里面的内容,那么这个私有的作用域就不能销毁了。例如闭包
5、不立即销毁的情况
函数执行返回了一个引用数据类型的值,但是外面没有变量接收,我只是把返回的值使用了一次,这样当前形成的作用域处于不立即销毁状态,当浏览器空闲的时候会把没用的统一进行销毁
function fn() {
return function (n) {
}
}
fn()(15);


关于函数问题:
1、函数被调用时,它是运行在他被声明时的语法环境中的;
2、函数自己无法运行,它总是被对象调用的,函数运行时,函数体内的this指针指向调用该函数的对象,如果调用函数时没有明确指定该对象, this 默认指向 window ( strict 模式除外,本文不涉及 strict 模式)
3、函数是一种带有可执行代码的对象类型数据。

/**
* 頂頂頂頂頂頂頂頂頂 頂頂頂頂頂頂頂頂頂
* 頂頂頂頂頂頂頂     頂頂     
*    頂頂   頂頂頂頂頂頂頂頂頂頂頂
*    頂頂   頂頂頂頂頂頂頂頂頂頂頂
*    頂頂   頂頂       頂頂
*    頂頂   頂頂  頂頂頂  頂頂
*    頂頂   頂頂  頂頂頂  頂頂
*    頂頂   頂頂  頂頂頂  頂頂
*    頂頂   頂頂  頂頂頂  頂頂
*    頂頂       頂頂頂 
*    頂頂      頂頂 頂頂 頂頂
*  頂頂頂頂   頂頂頂頂頂 頂頂頂頂頂
*  頂頂頂頂   頂頂頂頂   頂頂頂頂
*/



Amy尾巴 发表于 2017-1-12 09:26:15

顶顶

ibcadmin 发表于 2017-1-12 17:41:06

..这个图...

min 发表于 2017-1-12 17:42:24

+1
页: [1]
查看完整版本: 面试题知识点-作用域