javascript 闭包, 函数字面量
javascript 闭包, 函数字面量
邪云子 发表于4年前
javascript 闭包, 函数字面量
  • 发表于 4年前
  • 阅读 104
  • 收藏 2
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

##常见Javascript定义函数:

在Javascript定义一个函数一般有如下方式:

// 函数关键字(function)语句:
function fun(x){alert(x);}

// 函数字面量(Function Literals):
var fun = function(x){alert(x);}

//Function()构造函数:
var fun = new Function('x','alert(x);')

上面三种方法定义了同一个方法函数fun,第1种就是最常用的方法,后两种都是把一个函数复制给变量fun,而这个函数是没有名字的,即匿名函数。

##闭包 先说说为什么 JS 可以闭包,因为 JS 的变量基于词法作用域。

动态作用域和词法域的区别是什么?

词法作用域

匿名函数,定义并执行

(function(args) {
   alert(args);
})('script'); 

匿名函数的链式调用

(function(args) {
    alert(args);
    return arguments.callee;
})(1)(2)(3);

闭包计数器

var uniqueInteger = (function(){
	var counter = 0;
	return function(){return counter++;};
}());

var al = function (){
	for(var i=0; i<10; i++){
		alert(uniqueInteger());
	}
}

al();

Javascript模块化编程(一):模块的写法

Javascript模块化编程(二):AMD规范

Javascript模块化编程(三):require.js的用法

JavaScript Module Pattern: In-Depth

向setTimeout传递函数参数

向setTimeout传递函数参数

Array.prototype.slice.call

共有 人打赏支持
粉丝 19
博文 96
码字总数 24684
×
邪云子
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: