Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
JavaScript 闭包分享(一)<br />闭包传递参数<br />taibo@alipay.com<br />
闭包的结构<br />
常见结构:独立语句<br />(function() {<br />// your code...<br />})();<br />
常见结构:表达式(缓存示例)<br />var get = function() {<br />var cache = {};<br />return function(selector) {<br />  if(cache.hasOwnPro...
闭包的优点<br />天然的安全性<br />var => private<br />逻辑相对独立<br />函数式编程的优势<br />延迟计算<br />概念简单易懂<br />变化多端<br />
闭包的参数传递<br />
回顾:<br />(function() {<br />// your code...<br />})();<br />(function($) {<br />	$(function() {<br />	// code on DOMReady…...
传递常见引用:示例<br />(function(w, d) {<br />// w.setTimeout(…<br />// d.getElementById(…<br />})(window, document);<br />(functi...
传递常见引用:优点<br />特定范围内的作用域<br />快捷引用<br />减少压缩后字节数<br />更好的代码混淆<br />
传递常见引用:缺点<br />长时间持有对window的引用,导致特定场景下的跨域冲突<br />
传递“无引用”:示例<br />(function(undefined) {<br />// if(typeofwindow.Tracker === undefined) {<br />// …<br />})();<br />
传递“无引用”:优点<br />安全地使用undefined<br />快捷引用<br />减少压缩后字节数<br />更好的代码混淆<br />
传递“无引用”:缺点<br />暂时没有,推荐使用<br />
比较:测试变量/对象是否可用<br />if(myVar)<br />if(window.myVar)<br />if(!!myVar)<br />if(typeofmyVar !== ‘undefined’)<br />if(typeofmy...
thnaksQ & A<br />
Upcoming SlideShare
Loading in …5
×

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

3,956 views

Published on

本期介绍了JS中闭包的概念、参数传递和测试变量可用性的问题。

Published in: Technology
  • Be the first to comment

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

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

×