我已经知道如何使这段代码工作,但我的问题更多是关于为什么它会这样工作,以及我做的事情是否正确。
我可以做的最简单的例子来展示我的问题是这样的:
假设我有一个函数可以在按下按钮时将输入字段的值增加 10。
var scopeTest = {
parseValue : function( element, value ) {
value = parseInt( element.val(), 10 );
//Why does this not return the value?
return value;
},
incrementValue : function( element, button, value ) {
button.on('mousedown', function (e) {
//Execute the parseValue function and get the value
scopeTest.parseValue( element, value );
//Use the parsed value
element.val( value + 10 );
e.preventDefault();
});
},
init : function () {
var element = $('#test-input'),
button = $('#test-button'),
value = '';
this.incrementValue( element, button, value );
}
};
scopeTest.init();
上面的代码不起作用,因为在方法内部执行时该parseValue
方法没有正确返回value
var incrementValue
。
为了解决这个问题,我必须像这样将scopeTest.parseValue( element, value );
参数设置为value
变量:
value = scopeTest.parseValue( element, value );
比代码有效。
但我的问题是为什么?为什么这个额外的变量赋值步骤是必要的,为什么 return 语句还不够?此外,我使用我的函数/方法做的一切都是正确的,或者这只是 JavaScript 的工作方式?
这里的工作示例=> http://jsfiddle.net/Husar/zfh9Q/11/