我正在调用一个函数myFunc()并将其存储在一个变量myFunction中,传递3作为默认参数,将用于添加。
myFunction获取返回的匿名函数,其中包含在控制台中记录消息时传递的参数。
我也试图访问myFunction的setValue方法,将原来的值改为3比1
<script type="text/javascript">
function myFunc(numPassed){
var num = numPassed;
return function(x){
setValue = function(newVal){
num = newVal;
return (num + x);
};
};
}
var myFunction = myFunc(3);
myFunction.setValue(1);
console.log(myFunction(4));
</script>
当我运行时,它会给我错误:
对象函数(x)没有方法'setValue'
我也尝试返回setValue(),但仍然无法识别该方法。
<script type="text/javascript">
function myFunc(numPassed){
var num = numPassed;
return function(x){
return setValue = function(newVal){
num = newVal;
return (num + x);
};
};
}
var myFunction = myFunc(3);
myFunction.setValue(1);
console.log(myFunction(4));
</script>
答案 0 :(得分:0)
如果我理解正确,您希望myFunc
创建一个函数,将其输入x
添加到值numPassed
,但允许numPassed
被覆盖稍后使用setValue
。如果是这种情况,您的代码应如下所示:
function myFunc(numPassed){
var num = numPassed;
function add(x) {
return num + x;
};
add.setValue = function(newVal) {
num = newVal;
};
return add;
}
由于myFunc
返回add
,您希望从返回值公开访问的所有内容都必须是add
的属性。