分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 软件开发

JS进阶-闭包的几种常见形式

发布时间:2023-09-06 01:11责任编辑:熊小新关键词:闭包

作用域链:

//作用域链 ???var a = 1; ???function test() { ???????var b =2; ???????return a; ???} ???alert(test());//弹出1; ???alert(b);//不能获取b
//scope chain ???var a = 1; ???function test() { ???????var b = 2; ???????function test1() { ???????????var c = 3; ???????????alert(a); ???????????alert(b); ???????????alert(c); ???????} ???????test1(); ???} ???test();//弹出1,弹出2,弹出3;

词法作用域:

//词法作用域; ???function f1() { ???????var a = 12; ???????return f2(); ???} ???function f2() { ???????return a; ???} ???alert(f1());//并不能获取a,a在f2()中并未定义;
function f1() { ???????var a = 1; ???????return f2(); ???} ???function f2() { ???????var b = 3; ???????alert(b); ???????return a; ???} ???alert(f1());//弹出3,a在f2()中未定义
function f1() { ???????var a = 1; ???????return f2(); ???} ???function f2() { ???????var b = 3; ???????alert(b); ???????return a; ???} ???alert(f1());//弹出3,a在f2()中未定义,undefined ???var a=55; ???alert(f1());//弹出3,弹出55

如何通过闭包突破全局作用域链——几种常见形式

//通过闭包突破全局作用域链 ???function f() { ???????var a = "sun"; ???????return function () { ???????????return a; ???????} ???} ???var test = f(); ???alert(test());//弹出sun
var n;function f() { ???var a = "sun"; ???n = function () { ???????return a; ???}}f();alert(n());//弹出sun
 ??function f(param) { ???????var n =function () { ???????????return param; ???????}; ???????param++; ???????return n; ???} ???var test = f(45); ???alert(test());//弹出46;

JS进阶-闭包的几种常见形式

原文地址:http://www.cnblogs.com/sunxirui00/p/7527279.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved