javascript代码实例教程-js:深入闭包(作用域)

发布时间:2019-02-02 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了javascript代码实例教程-js:深入闭包(作用域)脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。

/**
* 闭包的作用域
*/
fn1(); //fn1 能够执行,不会报错,对于通过function func_name()这种写法来定义的函数,永远都会被最先初始化。
function fn1(){
console.LOG("fn1");
}

fn2(); //报错:fn2 is not a function
/**
*使用如下方式定义函数,不会被先执行,如果在定义之前调用,报错。
*这种函数的定义方式是先在内存中创建一块区域,之后通过一个fn2的变量指向这块区域,
*这块区域的函数开始时是没有名称的,这种函数名称叫做匿名函数
*/
VAR fn2 = function(){
console.log("fn2");
}
----------------------------------函数作用域--------------------------------------
/**
* 在js中当进行函数调用时,会为每一个函数增加一个属性scoPE,通过这个属性来指向一块内存,
* 这块内存中包含有所有的上下文使用的变量,当在某个函数中调用了新函数之后,新函数依然会有
* 一个作用域来指向原有的函数的scope和自己新增加的scope,这样就形成了一个链式结构,
* 这就是js中的作用域链。
*/
var color = "red";

var showColor = function(){
console.log(this.color);
}

function changeColor(){
var anotherColor = "blue";
function swapColor(){
var tempColor = anotherColor;
anotherColor = color;
color = tempColor;
}
swapColor();
}

changeColor();
showColor(); //blue
执行步骤:

javascript代码实例教程-js:深入闭包(作用域)

javascript代码实例教程-js:深入闭包(作用域)

javascript代码实例教程-js:深入闭包(作用域)


释放swapColor

释放changeColor

执行showColor

--------------------------------------------------------------------------

var name = "one";
var object = {
name:"two",
getName:function(){
//var name = "three";
return function(){
return this.name;
//return name;
};
}
};

console.log(object.getName()()); //one

想想问什么?若是在getName函数里再加个 var name = "three" 呢?若把匿名函数里的 return this.name; 改为 return name; 呢?

返回值是什么,为什么?

如果你能理解上面代码的运行结果,应该就算理解闭包的运行机制了。
/**
* 使用闭包虽然可以演唱作用域,但是也会占用过多的内存,一般非特殊情况下不要使用闭包。
*
*/

觉得可用,就经常来吧! 脚本宝典 欢迎评论哦! js脚本,巧夺天工,精雕玉琢。小宝典献丑了!

脚本宝典总结

以上是脚本宝典为你收集整理的javascript代码实例教程-js:深入闭包(作用域)全部内容,希望文章能够帮你解决javascript代码实例教程-js:深入闭包(作用域)所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。