Javascript 函数和模块定义
匿名函数
// 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.
roottakes the value of`window.nstakes the value of'detectZoom'factorytakes 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 函数和模块定义的更多相关文章
- JavaScript函数的多种定义方法
缘起 javascript和其他编程语言相比比较随意,所以javascript代码中充满各种奇葩的写法,有时雾里看花,当然,能理解各型各色的写法也是对 javascript语言特性更进一步的深入理解, ...
- 前端基础之javaScript(函数)
目录 一:javaScript函数 1.函数关键字 2.格式 3.无参函数 4.有参函数 二:关键字arguments 1.能够获取函数接受的索引参数 2.关键字arguments(限制函数不能多也不 ...
- javascript函数的定义与执行
要理解javascript函数的定义与执行,首先需要知道这几个重要的概念,现在可以先知道稍后再理解! 函数的执行环境(excution context).活动对象(call object).作用域(s ...
- Javascript函数(定义、传值、重载)
Javascript 函数的定义的方式有不止一种. 第一种方式: function fn1(){ alert(typeof fn1); alert(“fn1”); } 在调用的时候直接就可以fu1() ...
- JavaScript 函数定义
JavaScript 使用关键字 function 定义函数. 函数可以通过声明定义,也可以是一个表达式. 函数声明 在之前的教程中,你已经了解了函数声明的语法 : function function ...
- JavaScript函数定义 ,参数调用
一.JavaScript函数函数: 函数就是一种封装,由事件驱动的或者当它被调用时执行的可重复使用的代码块.定义函数:function 函数名(){函数体;}数不会自动执行,需要被调用才可以执行函数名 ...
- JavaScript 函数定义和调用
普通的函数定义方法: function abs(x):{ if (x >= 0){ return x; }else { return -x ; } } 两种方法是等价的 var abs = fu ...
- javascript函数定义以及常见用法
我们知道,js函数有多种写法,函数声明 ,函数表达式,Function式构造函数,自执行函数,包括Es6的箭头函数,Class类写法,高阶函数,函数节流/函数防抖,下面我就 ...
- JavaScript函数学习总结(一)---函数定义
博客原文地址:Claiyre的个人博客 如需转载,请在文章开头注明原文地址 在许多传统的OO语言中,对象可以包含数据,还可拥有方法,也就是属于该对象的函数.但在JavaScript中,函数也被认为是一 ...
随机推荐
- QueryRunner的使用
在相继学习了JDBC和数据库操作之后,我们明显感到编写JDBC代码并非一件轻松的事儿.为了帮助我们更高效的学习工作,从JDBC的繁重代码中解脱出来,老佟给我们详尽介绍了一个简化JDBC操作的组件——D ...
- TCP连接建立和关闭中的疑难点
TCP连接建立和关闭中的疑难点 作者:夏语岚 撰写日期:2011-10-29 近日在阅读<Unix网络编程>,以前在<计算机网络>课程中学到TCP,当时只是简单了解了TC ...
- tyvj P1716 - 上帝造题的七分钟 二维树状数组区间查询及修改 二维线段树
P1716 - 上帝造题的七分钟 From Riatre Normal (OI)总时限:50s 内存限制:128MB 代码长度限制:64KB 背景 Background 裸体就意味着 ...
- Android 判断是否联网 是否打开上网
ConnectivityManager cwjManager=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); ...
- 【HDU2222】Keywords Search(AC自动机)
Problem Description In the modern time, Search engine came into the life of everybody like Google, B ...
- MYSQL常用命令集合
1.导出整个数据库 mysqldump -u 用户名 -p --default-character-set=latin1 数据库名 > 导出的文件名(数据库默认编码是latin1) mysqld ...
- vsftp被动模式启用iptables访问设置
vsftpd服务搭建好之后,如果是使用主动模式访问.那么启用iptables只需添加以下规则即可: -A RH-Firewall-1-INPUT -m state --state NEW -m tcp ...
- Hibernate之SchemaExport+配置文件生成表结构
首先要生成表,得先有实体类,以Person.java为例: /** * * @author Administrator * @hibernate.class table="T_Person& ...
- 【转】XCode、Cocoa、Objective-C 的关系区别
原文网址:http://blog.sina.com.cn/s/blog_5e89e1ff0100z4k1.html Object-Ciphone开发用的编程语言不是c,c++,java 而是objec ...
- HDU 5914 Triangle 【构造】 (2016中国大学生程序设计竞赛(长春))
Triangle Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Su ...