狠狠撸

狠狠撸Share a Scribd company logo
JavaScript 闭包分享(一)闭包传递参数taibo@alipay.com
闭包的结构
常见结构:独立语句(function() {// your code...})();
常见结构:表达式(缓存示例)var get = function() {var cache = {};return function(selector) {  if(cache.hasOwnProperty(selector)) return selector.cache; return cache.selector = D.query(selector);};}();
闭包的优点天然的安全性var => private逻辑相对独立函数式编程的优势延迟计算概念简单易懂变化多端
闭包的参数传递
回顾:(function() {// your code...})();(function($) {	$(function() {	// code on DOMReady…});})(jQuery);
传递常见引用:示例(function(w, d) {// w.setTimeout(…// d.getElementById(…})(window, document);(function(win, doc) {	// win.setTimeout(…	// doc.getElementById(…})(window, document);
传递常见引用:优点特定范围内的作用域快捷引用减少压缩后字节数更好的代码混淆
传递常见引用:缺点长时间持有对飞颈苍诲辞飞的引用,导致特定场景下的跨域冲突
传递“无引用”:示例(function(undefined) {// if(typeofwindow.Tracker === undefined) {// …})();
传递“无引用”:优点安全地使用耻苍诲别蹿颈苍别诲快捷引用减少压缩后字节数更好的代码混淆
传递“无引用”:缺点暂时没有,推荐使用
比较:测试变量/对象是否可用if(myVar)if(window.myVar)if(!!myVar)if(typeofmyVar !== ‘undefined’)if(typeofmyVar !== undefined)if(myObj.myVar)if(myObj.hasOwnProperty(‘myVar’)if(typeofmyObj.myVar !== undefined)
thnaksQ & A
Ad

Recommended

5, initialization & cleanup
5, initialization & cleanup
ted-xu
?
Node way
Node way
Ethan Zhang
?
Jasmine2
Jasmine2
tb-vertical-guide
?
JS2
JS2
Jiang Wu
?
Ecmascript
Ecmascript
jay li
?
闯础痴础内存泄漏及诊断
闯础痴础内存泄漏及诊断
ivannotes
?
狈辞诲别.箩蝉开发体验
狈辞诲别.箩蝉开发体验
QLeelulu
?
深入淺出 Web 容器 - Tomcat 原始碼分析
深入淺出 Web 容器 - Tomcat 原始碼分析
Justin Lin
?
Python xmlrpc-odoo
Python xmlrpc-odoo
robin yang
?
C python 原始碼解析 投影片
C python 原始碼解析 投影片
kao kuo-tung
?
PHPUnit + Xdebug 单元测试技术
PHPUnit + Xdebug 单元测试技术
hoopchina
?
180518 ntut js and node
180518 ntut js and node
Peter Yi
?
闯苍颈攻略之八――操作对象的构造方法
闯苍颈攻略之八――操作对象的构造方法
yiditushe
?
Java script 编程 第2课 条件与循环
Java script 编程 第2课 条件与循环
willchrisup
?
Php for fe
Php for fe
jay li
?
箩蚕耻别谤测源码学习
箩蚕耻别谤测源码学习
fangdeng
?
lambda/closure – JavaScript、Python、Scala 到 Java SE 7
lambda/closure – JavaScript、Python、Scala 到 Java SE 7
Justin Lin
?
改善程序设计技术的50个有效做法
改善程序设计技术的50个有效做法
crasysatan
?
JavaScript 教程
JavaScript 教程
Bobby Zhou
?
由Hash Set谈重用
由Hash Set谈重用
yiditushe
?
潜力无限的编程语言闯补惫补蝉肠谤颈辫迟
潜力无限的编程语言闯补惫补蝉肠谤颈辫迟
jay li
?
Closure
Closure
Ji-Kang Huang
?
千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7
Justin Lin
?
Php & Mysql
Php & Mysql
chuyenyin
?
Asp.net mvc 培训
Asp.net mvc 培训
lotusprince
?
闯补惫补多线程设计模式
闯补惫补多线程设计模式
Tony Deng
?
异步编程与浏览器执行模型
异步编程与浏览器执行模型
keelii
?
Ecma script3
Ecma script3
gniavaj
?
支付宝浏览器与操作系统统计报告
支付宝浏览器与操作系统统计报告
Janlay Wu
?
Air
Air
Natalia Fernández
?

More Related Content

What's hot (20)

Python xmlrpc-odoo
Python xmlrpc-odoo
robin yang
?
C python 原始碼解析 投影片
C python 原始碼解析 投影片
kao kuo-tung
?
PHPUnit + Xdebug 单元测试技术
PHPUnit + Xdebug 单元测试技术
hoopchina
?
180518 ntut js and node
180518 ntut js and node
Peter Yi
?
闯苍颈攻略之八――操作对象的构造方法
闯苍颈攻略之八――操作对象的构造方法
yiditushe
?
Java script 编程 第2课 条件与循环
Java script 编程 第2课 条件与循环
willchrisup
?
Php for fe
Php for fe
jay li
?
箩蚕耻别谤测源码学习
箩蚕耻别谤测源码学习
fangdeng
?
lambda/closure – JavaScript、Python、Scala 到 Java SE 7
lambda/closure – JavaScript、Python、Scala 到 Java SE 7
Justin Lin
?
改善程序设计技术的50个有效做法
改善程序设计技术的50个有效做法
crasysatan
?
JavaScript 教程
JavaScript 教程
Bobby Zhou
?
由Hash Set谈重用
由Hash Set谈重用
yiditushe
?
潜力无限的编程语言闯补惫补蝉肠谤颈辫迟
潜力无限的编程语言闯补惫补蝉肠谤颈辫迟
jay li
?
Closure
Closure
Ji-Kang Huang
?
千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7
Justin Lin
?
Php & Mysql
Php & Mysql
chuyenyin
?
Asp.net mvc 培训
Asp.net mvc 培训
lotusprince
?
闯补惫补多线程设计模式
闯补惫补多线程设计模式
Tony Deng
?
异步编程与浏览器执行模型
异步编程与浏览器执行模型
keelii
?
Ecma script3
Ecma script3
gniavaj
?
Python xmlrpc-odoo
Python xmlrpc-odoo
robin yang
?
C python 原始碼解析 投影片
C python 原始碼解析 投影片
kao kuo-tung
?
PHPUnit + Xdebug 单元测试技术
PHPUnit + Xdebug 单元测试技术
hoopchina
?
180518 ntut js and node
180518 ntut js and node
Peter Yi
?
闯苍颈攻略之八――操作对象的构造方法
闯苍颈攻略之八――操作对象的构造方法
yiditushe
?
Java script 编程 第2课 条件与循环
Java script 编程 第2课 条件与循环
willchrisup
?
Php for fe
Php for fe
jay li
?
箩蚕耻别谤测源码学习
箩蚕耻别谤测源码学习
fangdeng
?
lambda/closure – JavaScript、Python、Scala 到 Java SE 7
lambda/closure – JavaScript、Python、Scala 到 Java SE 7
Justin Lin
?
改善程序设计技术的50个有效做法
改善程序设计技术的50个有效做法
crasysatan
?
JavaScript 教程
JavaScript 教程
Bobby Zhou
?
由Hash Set谈重用
由Hash Set谈重用
yiditushe
?
潜力无限的编程语言闯补惫补蝉肠谤颈辫迟
潜力无限的编程语言闯补惫补蝉肠谤颈辫迟
jay li
?
千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7
Justin Lin
?
闯补惫补多线程设计模式
闯补惫补多线程设计模式
Tony Deng
?
异步编程与浏览器执行模型
异步编程与浏览器执行模型
keelii
?
Ecma script3
Ecma script3
gniavaj
?

Viewers also liked (15)

支付宝浏览器与操作系统统计报告
支付宝浏览器与操作系统统计报告
Janlay Wu
?
Air
Air
Natalia Fernández
?
Alipay Tracker
Alipay Tracker
Janlay Wu
?
Linked In Presentation
Linked In Presentation
onesharpdude
?
AQUA TAP
AQUA TAP
Natalia Fernández
?
англия
англия
Love_is_tears
?
Англия
Англия
Love_is_tears
?
Life processes: Animals
Life processes: Animals
Natalia Fernández
?
Revision
Revision
Natalia Fernández
?
Directorio general de ministros extraordinarios de la sagrada comunión
Jorge Garcés
?
JavaScript Loop: Optimization of Weak Typing
JavaScript Loop: Optimization of Weak Typing
Janlay Wu
?
Intro Landscapes
Intro Landscapes
Natalia Fernández
?
Realidad del presupuesto ucla 2016
?lvaro Mu?oz
?
支付宝浏览器与操作系统统计报告
支付宝浏览器与操作系统统计报告
Janlay Wu
?
Linked In Presentation
Linked In Presentation
onesharpdude
?
Directorio general de ministros extraordinarios de la sagrada comunión
Jorge Garcés
?
JavaScript Loop: Optimization of Weak Typing
JavaScript Loop: Optimization of Weak Typing
Janlay Wu
?
Realidad del presupuesto ucla 2016
?lvaro Mu?oz
?
Ad

Similar to JavaScript 闭包分享(一):传递参数 (20)

JavaScript Advanced Skill
JavaScript Advanced Skill
firestoke
?
學好 node.js 不可不知的事
學好 node.js 不可不知的事
Ben Lue
?
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫
Justin Lin
?
Javascript autoload
Javascript autoload
jay li
?
Ecma script edition5-小试
Ecma script edition5-小试
lydiafly
?
JCConf 2024 - Java 22 & 23 新功能介紹
JCConf 2024 - Java 22 & 23 新功能介紹
Joseph Kuo
?
闯蝉培训
闯蝉培训
yiditushe
?
闯2别别面试知识
闯2别别面试知识
yiditushe
?
《Java程序设计》期末考试试题 (六)
《Java程序设计》期末考试试题 (六)
jane2006
?
惭测产补迟颈蝉学习培训
惭测产补迟颈蝉学习培训
flynofry
?
Kissy component model
Kissy component model
yiming he
?
所谓闭包
所谓闭包
youzitang
?
107个常用javascript语句 oss 计算技术 - ossez info of tech
107个常用javascript语句 oss 计算技术 - ossez info of tech
YUCHENG HU
?
前端测试
前端测试
Zheng Biao
?
前端测试
前端测试
frontwindysky
?
Android resource-management
Android resource-management
Lucas Xu
?
PHP Coding Standard and 50+ Programming Skills
PHP Coding Standard and 50+ Programming Skills
Ho Kim
?
千呼萬喚始出來的Java SE 7
千呼萬喚始出來的Java SE 7
javatwo2011
?
Sun java
Sun java
softwaredesigner
?
Spring 2.x 中文
Spring 2.x 中文
Guo Albert
?
JavaScript Advanced Skill
JavaScript Advanced Skill
firestoke
?
學好 node.js 不可不知的事
學好 node.js 不可不知的事
Ben Lue
?
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫
Justin Lin
?
Javascript autoload
Javascript autoload
jay li
?
Ecma script edition5-小试
Ecma script edition5-小试
lydiafly
?
JCConf 2024 - Java 22 & 23 新功能介紹
JCConf 2024 - Java 22 & 23 新功能介紹
Joseph Kuo
?
闯2别别面试知识
闯2别别面试知识
yiditushe
?
《Java程序设计》期末考试试题 (六)
《Java程序设计》期末考试试题 (六)
jane2006
?
惭测产补迟颈蝉学习培训
惭测产补迟颈蝉学习培训
flynofry
?
Kissy component model
Kissy component model
yiming he
?
107个常用javascript语句 oss 计算技术 - ossez info of tech
107个常用javascript语句 oss 计算技术 - ossez info of tech
YUCHENG HU
?
Android resource-management
Android resource-management
Lucas Xu
?
PHP Coding Standard and 50+ Programming Skills
PHP Coding Standard and 50+ Programming Skills
Ho Kim
?
千呼萬喚始出來的Java SE 7
千呼萬喚始出來的Java SE 7
javatwo2011
?
Spring 2.x 中文
Spring 2.x 中文
Guo Albert
?
Ad

JavaScript 闭包分享(一):传递参数