• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
JavaScript 闭包分享(一):传递参数
 

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

on

  • 3,928 views

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

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

Statistics

Views

Total Views
3,928
Views on SlideShare
3,917
Embed Views
11

Actions

Likes
3
Downloads
12
Comments
0

2 Embeds 11

http://www.slideshare.net 10
http://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

    • 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