匿名函数

// calculator.js
(function(root) {
  var calculator = {
    sum: function(a, b) { return a + b; }
  };
  root.Calculator = calculator;
})(this);

// app.js
console.log(Calculator.sum(1, 2)); // => 3

一个例子:

(function (root, ns, factory) {
// some code
} (window, 'detectZoom', function() {
// some more code
}));

There is an anonymous function taking three parameters (root, ns, factory) which is immediately invoked.

  • root takes the value of`window.
  • ns takes the value of 'detectZoom'
  • factory takes the value of callback function (also anonymous)

The explanation:

(function (root, ns, factory) {
// the body of the anonymous function
} (window, 'detectZoom', function() {
// the body of the 'factory' callback
}));

To break it apart, how to get to this code in four steps:

 1.
// Anonymous function.
(function (root, ns, factory) {/* body */}); 2.
// Anonynmous function, immediately invoked
(function (root, ns, factory) {/* body */})(); // parentheses mean it's invoked 3.
// Callback as a separate argument
var cbk = function () {};
(function (root, ns, factory) {/* body */})(window, 'detectZoom', cbk); 4.
// Callback as an anonymous function
(function (root, ns, factory) {/* body */})(window, 'detectZoom', function () {});

You could rewrite your code to be more verbose:

var outer = function (root, ns, factory) {
// the body
}; var callback = function () {
// the body
}; outer(window, 'detectZoom', callback); 三种模块定义方式
1) es6 // calculator.js
export function sum(a, b) {
  return a + b;
}; // app.js
import calculator from "calculator"; console.log(calculator.sum(1, 2)); 2. common // calculator.js
module.exports.sum = function (a, b) {
  return a + b;
}; // app.js
var calculator = require("calculator"); console.log(calculator.sum(1, 2)); 3. Amd
// calculator.js
define({
  sum: function(a, b) {
    return a + b;
  }
}); // app.js
define(["./calculator"], function(calculator) {
  console.log(calculator.sum(1, 2));
});

Javascript 函数和模块定义的更多相关文章

  1. JavaScript函数的多种定义方法

    缘起 javascript和其他编程语言相比比较随意,所以javascript代码中充满各种奇葩的写法,有时雾里看花,当然,能理解各型各色的写法也是对 javascript语言特性更进一步的深入理解, ...

  2. 前端基础之javaScript(函数)

    目录 一:javaScript函数 1.函数关键字 2.格式 3.无参函数 4.有参函数 二:关键字arguments 1.能够获取函数接受的索引参数 2.关键字arguments(限制函数不能多也不 ...

  3. javascript函数的定义与执行

    要理解javascript函数的定义与执行,首先需要知道这几个重要的概念,现在可以先知道稍后再理解! 函数的执行环境(excution context).活动对象(call object).作用域(s ...

  4. Javascript函数(定义、传值、重载)

    Javascript 函数的定义的方式有不止一种. 第一种方式: function fn1(){ alert(typeof fn1); alert(“fn1”); } 在调用的时候直接就可以fu1() ...

  5. JavaScript 函数定义

    JavaScript 使用关键字 function 定义函数. 函数可以通过声明定义,也可以是一个表达式. 函数声明 在之前的教程中,你已经了解了函数声明的语法 : function function ...

  6. JavaScript函数定义 ,参数调用

    一.JavaScript函数函数: 函数就是一种封装,由事件驱动的或者当它被调用时执行的可重复使用的代码块.定义函数:function 函数名(){函数体;}数不会自动执行,需要被调用才可以执行函数名 ...

  7. JavaScript 函数定义和调用

    普通的函数定义方法: function abs(x):{ if (x >= 0){ return x; }else { return -x ; } } 两种方法是等价的 var abs = fu ...

  8. javascript函数定义以及常见用法

                  我们知道,js函数有多种写法,函数声明 ,函数表达式,Function式构造函数,自执行函数,包括Es6的箭头函数,Class类写法,高阶函数,函数节流/函数防抖,下面我就 ...

  9. JavaScript函数学习总结(一)---函数定义

    博客原文地址:Claiyre的个人博客 如需转载,请在文章开头注明原文地址 在许多传统的OO语言中,对象可以包含数据,还可拥有方法,也就是属于该对象的函数.但在JavaScript中,函数也被认为是一 ...

随机推荐

  1. [python]获取字符串类型

    >>>type(value) <class 'type'> >>>isinstance(value,type) True/False

  2. [译]36 Days of Web Testing(四)

    Day 19: UX  用户体验 Why ? 最近UX变得越来越火,用户提现往往会直接联想到易用性和设计. 在我看来,UX不仅仅是这两点.UX, User Experience ,对我而言,不单单是产 ...

  3. LightOj_1274 Beating the Dataset

    题目链接 题意: 给一个文档, 这个文档由yes .no 组成, 共有s个byte, 共有n个yes.no. 假设yes的个数为yes_num, no的个数为no_num. 将这n个数进行排列, 对于 ...

  4. Hdu 3177 Crixalis's Equipment

    Crixalis's Equipment Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  5. Cxf soap协议改成1.2

    在和.net做联调的时候,报错: A SOAP 1.2 message is not valid when sent to a SOAP 1.1 only endpoint. 看来是soap协议不匹配 ...

  6. Myeclipse中可以正常显示,但运行后的网页找不到图片

    目录为: 1 douban   1.1 css   1.2 image 2 pages   2.1 index.jsp 路径为:<img  src="../douya/image/lg ...

  7. rt: Unknown command 'PATH='

  8. Linux Shell编程(18)—— 循环控制

    影响循环行为的命令break, continuebreak和continue这两个循环控制命令[1]与其它语言的类似命令的行为是相同的. break命令将会跳出循环,continue命令将会跳过本次循 ...

  9. Linux下高效编写Shell——shell特殊字符汇总

    Linux下无论如何都是要用到shell命令的,在Shell的实际使用中,有编程经验的很容易上手,但稍微有难度的是shell里面的那些个符号,各种特殊的符号在我们编写Shell脚本的时候如果能够用的好 ...

  10. lr 和 Qtp 视频连接

    http://blog.sina.com.cn/s/blog_7085382f01012ysn.html