其实这个也是关于作用域的理解,和上一篇一样。主要是加深理解
[JavaScript] 纯文本查看 复制代码 /**
* [url]http://www.flvcd.com/[/url]
* .--, .--,
* ( ( \.---./ ) )
* '.__/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、函数是一种带有可执行代码的对象类型数据。
[JavaScript] 纯文本查看 复制代码 /**
* 頂頂頂頂頂頂頂頂頂 頂頂頂頂頂頂頂頂頂
* 頂頂頂頂頂頂頂 頂頂
* 頂頂 頂頂頂頂頂頂頂頂頂頂頂
* 頂頂 頂頂頂頂頂頂頂頂頂頂頂
* 頂頂 頂頂 頂頂
* 頂頂 頂頂 頂頂頂 頂頂
* 頂頂 頂頂 頂頂頂 頂頂
* 頂頂 頂頂 頂頂頂 頂頂
* 頂頂 頂頂 頂頂頂 頂頂
* 頂頂 頂頂頂
* 頂頂 頂頂 頂頂 頂頂
* 頂頂頂頂 頂頂頂頂頂 頂頂頂頂頂
* 頂頂頂頂 頂頂頂頂 頂頂頂頂
*/
|