为什么JavaScript闭包返回未定义
why is JavaScript Closure returning undefined
我知道我缺少一些非常基本的东西。但找不到它的问题?
<!DOCTYPE html>
<html>
<body>
<p>A function can access variables defined inside the function:</p>
<button type="button" onclick="alert(makeMyCounter.increment)">Click Me!</button>
<p id="demo"></p>
<script>
var makeMyCounter = function () {
var privateCounter = 0;
return {
increment : function() {
privateCounter += 1;
},
decrement : function() {
privateCounter += -1;
}
}
}();
</script>
</body>
为什么privateCounter返回未定义?但当通过浏览器进行调试时,它被分配了1。
您使用方法引用作为属性,要正确调用方法,请这样使用:
makeMyCounter.increment()
下一件事你没有在方法中返回,所以它将是未定义的。添加退货:
return {
increment : function() {
return privateCounter += 1;
},
decrement : function() {
return privateCounter += -1;
}
}
privateCounter
不是一个函数,因此它不会返回任何内容。
increment
是一个函数,但你没有把()
放在它后面,所以你没有调用它,它会提醒将函数转换为字符串的结果。
如果您将其称为(alert(makeMyCounter.increment());
),那么它将返回undefined
,因为它没有return
语句。
运行函数时,只需增加其值,但没有返回语句。
在javascript中,如果函数没有返回语句,默认情况下会返回undefined
。
如果您需要新值,请在increment
和decrement
函数中返回privateCounter
return {
increment : function() {
privateCounter += 1;
return privateCounter;
},
decrement : function() {
privateCounter += -1;
return privateCounter;
}
}
相关文章:
- 这.SOMETHING 总是返回未定义的 - extjs
- React+Meteor:this.ops返回未定义
- "日期“;AJAX请求返回的类型值未定义
- Regex提取URL返回数组的一部分;未定义”;
- 换行符拆分返回“”;未定义”;
- 解析-为什么user.getSessionToken()返回未定义的结果
- Javascript函数返回未定义
- JavaScript-获取数据属性的值返回未定义的值
- .val()返回未定义的.text返回随机代码
- 为什么innerHTML返回“未定义”
- "这个“;正在返回未定义的
- 函数jquery的未定义返回
- 为什么typeof的数组的数组的未定义值返回为“0”;未定义的“;我的条件不认为是真的
- winJS 从函数未定义返回 var
- $.get jquery 中的未定义返回
- Javascript 函数未定义返回
- 数据 ID 一直未定义返回
- 函数调用Javascritpt的未定义返回值
- 在函数中提示未定义返回.(问题)范围
- JSON字符串的未定义返回