给出以下功能:
function countdown() {
var result = "";
// do something with the result variable
return result;
}
如何在调用倒计时功能之前从另一个函数中更新result
变量?
function something(){
// update private variable "result"
}
答案 0 :(得分:1)
function countdown(modifiedResult) {
var result = "";
// do something with the result variable
result = modifiedResult;
return result;
}
function something(modifiedResult){
// update private variable "result"
var updatedResult = countdown(modifiedResult);
alert(updatedResult);
}
something("I am updated value");

答案 1 :(得分:0)
变量结果是私有的,无法从外部访问。 一种解决方案是将整个工件包装在工厂中:
function countdownFactory () {
var result = 0;//since its named countdown i assumed it should be a number
return {
get: function () { return countdown},
set: function (value) {countdown = value}
};
}
要使用此功能,您可以:
var countdown = countdownFactory();
countdown.set(2);
countdown.get() // returns 2
答案 2 :(得分:0)
闭包应该这样做,但你需要一些访问该功能。在这种情况下,它是countdown.setResult()
,它将值设置为私有变量result
。
var countdown = function () {
var result = '';
function countdown() {
return result;
}
countdown.setResult = function (r) {
result = r;
};
return countdown;
}();
function something(){
countdown.setResult(42);
}
alert(countdown()); // empty string
something();
alert(countdown()); // 42