我知道一些非常基本的东西。但无法找到它的错误吗?
<!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返回undefined?但是,当通过浏览器进行调试时,它被分配了1个。
答案 0 :(得分:2)
privateCounter
不是函数,因此它不会返回任何内容。
increment
是一个函数,但你没有把()
放在它之后,所以你没有调用它,它会提醒将函数转换为字符串的结果。
如果您要调用它(alert(makeMyCounter.increment());
),那么它将返回undefined
,因为它没有return
语句。
答案 1 :(得分:2)
您正在使用方法引用作为属性,以便正确地使用它来调用方法:
makeMyCounter.increment()
接下来的事情你没有在方法中返回所以它将是未定义的。添加退货:
return {
increment : function() {
return privateCounter += 1;
},
decrement : function() {
return privateCounter += -1;
}
}
答案 2 :(得分:1)
运行函数时,只需增加其值,但没有返回语句。
在javascript中,如果您的函数没有返回语句,则默认返回undefined
。
如果您需要privateCounter
和increment
函数中的新值decrement
return {
increment : function() {
privateCounter += 1;
return privateCounter;
},
decrement : function() {
privateCounter += -1;
return privateCounter;
}
}