我有一个用nameOfFunction();
调用的函数,函数的输出是一个整数,例如。 10
。
我也有var number = 5;
。
我无法更改函数nameOfFunction();
或将其替换为另一个变量。
有没有办法将number
添加到nameOfFunction();
,以便nameOfFunction();
的输出等于15?
像这样:
nameOfFunction() + number = nameOfFunction();
输出
10 + 5 = 15
使用更多信息进行编辑:NameOfFunction();是我的电子商务网站购物车中所有商品的总费用。它是计算物品数量及其数量所需的所有功能的输出。
数字变量是根据购物车中的金额而变化的送货费用。总计使用NameOfFunction();
呈现,并将值发布到表单。
我需要通过改变定义它的函数来操纵NameOfFunction();
的输出。添加number
必须在。
我无法展示代码,因为它是钝的,脱离背景是没有意义的。
答案 0 :(得分:1)
我无法更改函数nameOfFunction();或用另一个变量替换它。
从您随后的评论中,我的猜测(以及现在编辑和删除的答案的猜测 - 向Ele道歉,你说对了)是你可以,你只是不要实现你可以。在正常情况下,这样做(与删除的答案不同,坚持ES3级功能):
var oldFunction = nameOfFunction;
nameOfFunction = function() {
return oldFunction.apply(this, arguments) + 5;
};
默认情况下,函数的标识符(技术上,绑定)是可写的,所以上面记得旧函数,然后用调用原始函数的新函数替换它的绑定值并添加5结果。代码使用Function#apply
和arguments
来确保传递给函数的this
和所有参数都由包装器传递。
现在,对nameOfFunction
的所有调用都会看到旧函数的返回值加上5。
直播示例:
// The original function
function nameOfFunction(n) {
return n * 15 + 7;
}
// Us hijacking it:
var oldFunction = nameOfFunction;
nameOfFunction = function() {
return oldFunction.apply(this, arguments) + 5;
};
// All calls to it will now see the new return value:
console.log(nameOfFunction(2)); // 42
答案 1 :(得分:0)
存储在临时变量中,无论nameOfFunction返回什么,并添加要添加到其中的任何值。
let nameOfFunction = function() {
return 10;
}
let temp= nameOfFunction();
let ans = temp+5;
console.log(nameOfFunction()+5);