SlideShare 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);
传递常见引用:优点特定范围内的作用域快捷引用减少压缩后字节数更好的代码混淆
传递常见引用:缺点长时间持有对window的引用,导致特定场景下的跨域冲突
传递“无引用”:示例(function(undefined) {// if(typeofwindow.Tracker === undefined) {// …})();
传递“无引用”:优点安全地使用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

More Related Content

PPTX
5, initialization & cleanup
PDF
Node way
PPTX
PPT
PDF
Ecmascript
PPT
JAVA内存泄漏及诊断
PDF
Node.js开发体验
PDF
深入淺出 Web 容器 - Tomcat 原始碼分析
5, initialization & cleanup
Node way
Ecmascript
JAVA内存泄漏及诊断
Node.js开发体验
深入淺出 Web 容器 - Tomcat 原始碼分析

What's hot (20)

PDF
Python xmlrpc-odoo
PDF
C python 原始碼解析 投影片
PPTX
PHPUnit + Xdebug 单元测试技术
PPTX
180518 ntut js and node
PDF
Jni攻略之八――操作对象的构造方法
PPT
Java script 编程 第2课 条件与循环
PDF
Php for fe
PPTX
jQuery源码学习
PDF
lambda/closure – JavaScript、Python、Scala 到 Java SE 7
PPT
改善程序设计技术的50个有效做法
PDF
JavaScript 教程
PDF
由Hash Set谈重用
PDF
潜力无限的编程语言Javascript
PPTX
Closure
PDF
千呼萬喚始出來的 Java SE 7
PPT
Php & Mysql
PPT
Asp.net mvc 培训
PPTX
Java多线程设计模式
PPTX
异步编程与浏览器执行模型
PPTX
Ecma script3
Python xmlrpc-odoo
C python 原始碼解析 投影片
PHPUnit + Xdebug 单元测试技术
180518 ntut js and node
Jni攻略之八――操作对象的构造方法
Java script 编程 第2课 条件与循环
Php for fe
jQuery源码学习
lambda/closure – JavaScript、Python、Scala 到 Java SE 7
改善程序设计技术的50个有效做法
JavaScript 教程
由Hash Set谈重用
潜力无限的编程语言Javascript
Closure
千呼萬喚始出來的 Java SE 7
Php & Mysql
Asp.net mvc 培训
Java多线程设计模式
异步编程与浏览器执行模型
Ecma script3
Ad

Viewers also liked (15)

PDF
支付宝浏览器与操作系统统计报告
PPTX
Alipay Tracker
PPT
Linked In Presentation
PPTX
ODP
PPT
англия
PPT
Англия
ODP
Life processes: Animals
PPTX
Life processes of living things
PPTX
DOCX
Directorio general de ministros extraordinarios de la sagrada comunión
PPTX
JavaScript Loop: Optimization of Weak Typing
PPTX
Intro Landscapes
PDF
Realidad del presupuesto ucla 2016
支付宝浏览器与操作系统统计报告
Alipay Tracker
Linked In Presentation
англия
Англия
Life processes: Animals
Life processes of living things
Directorio general de ministros extraordinarios de la sagrada comunión
JavaScript Loop: Optimization of Weak Typing
Intro Landscapes
Realidad del presupuesto ucla 2016
Ad

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

ODP
JavaScript Advanced Skill
PDF
學好 node.js 不可不知的事
PDF
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫
PDF
Javascript autoload
PPTX
Ecma script edition5-小试
PDF
JCConf 2024 - Java 22 & 23 新功能介紹
PPT
Js培训
DOC
J2ee面试知识
DOC
《Java程序设计》期末考试试题 (六)
PPT
Mybatis学习培训
PDF
Kissy component model
PDF
所谓闭包
PDF
107个常用javascript语句 oss 计算技术 - ossez info of tech
PPTX
前端测试
PPTX
前端测试
PPTX
Android resource-management
PPT
PHP Coding Standard and 50+ Programming Skills
PPT
千呼萬喚始出來的Java SE 7
PPT
PDF
Spring 2.x 中文
JavaScript Advanced Skill
學好 node.js 不可不知的事
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫
Javascript autoload
Ecma script edition5-小试
JCConf 2024 - Java 22 & 23 新功能介紹
Js培训
J2ee面试知识
《Java程序设计》期末考试试题 (六)
Mybatis学习培训
Kissy component model
所谓闭包
107个常用javascript语句 oss 计算技术 - ossez info of tech
前端测试
前端测试
Android resource-management
PHP Coding Standard and 50+ Programming Skills
千呼萬喚始出來的Java SE 7
Spring 2.x 中文

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