你必须知道的【闭包】陷阱和案例(2)
来源:未知 责任编辑:责任编辑 发表时间:2014-05-26 11:00 点击:次
}
aa();
bb();
cc();//输出 “张磊”
因为内部的函数定义的变量覆盖了外部函数的变量,所以结果输出“张磊”。
解决办法:
var bb, cc;
function aa() {
var name = "当耐特";
(function (aa_name) {
bb = function () {
var name = "砖家";
(function (bb_name, aa_name) {
cc = function () {
var name = "张磊";
alert(aa_name);
alert(bb_name);
alert(name);
}
})(name, aa_name);
}
})(name);
}
aa();
bb();
cc();//输出“当耐特” “砖家” “张磊”
真实案例:
记得上周,我的一个同事(实习生),对下面一段代码产生疑惑,所以咨询我。如下所示:
$("#dialog-form").dialog({
autoOpen: false,
height: 300,
width: 350,
modal: true,
buttons: {
"Create an account": function () {
var bValid = true;
allFields.removeClass("ui-state-error");
相关新闻>>
- javascript闭包的高级用法
- JavaScript全面了解作用域(基础、this、闭包、继承)之一
- JavaScript全面了解作用域(基础、this、闭包、继承)之二
- 我知道的JavaScript -- 设计模式(桥接)应用之 – 验证器
- 我知道的JavaScript -- Json对象扁平化
- 我知道的JavaScript -- 数据结构之– Hashtable
- 学习Javascript闭包(Closure)
- 举例详细说明javascript作用域、闭包原理以及性能问题
- Javascript之Undefined你可能不知道的
- JavaScript重构(五):利用原型和闭包,完成组件方法
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>