Javascript错误,返回值为,返回值为
我很抱歉为这个noob的东西烦恼,但现在这一切都是新的。但是学习很慢。 在第一行代码中,我得到一个返回值(在这段代码中,我得到20*2=40。在下一阶段,我想将返回值(40)乘以20.=800。因此,在结果中,它将显示40和800。但我只得到它在发件箱[函数]中,它说。还有一条消息:“看起来你没有打印newNumber的值。”。 我做错了什么?谢谢你的帮助Javascript错误,返回值为,返回值为,javascript,math,return,var,Javascript,Math,Return,Var,我很抱歉为这个noob的东西烦恼,但现在这一切都是新的。但是学习很慢。 在第一行代码中,我得到一个返回值(在这段代码中,我得到20*2=40。在下一阶段,我想将返回值(40)乘以20.=800。因此,在结果中,它将显示40和800。但我只得到它在发件箱[函数]中,它说。还有一条消息:“看起来你没有打印newNumber的值。”。 我做错了什么?谢谢你的帮助 var timesTwo = function (number) { return number * 2; }; timesTwo(
var timesTwo = function (number) {
return number * 2;
};
timesTwo(20);
var newNumber = function (tal) {
(timesTwo * tal);
console.log(newNumber);
};
newNumber(20);
您需要做的是将结果赋给变量,然后在第二个函数中返回结果:
var timesTwo = function(number) {
return number * 2;
};
var twoTimesResult = timesTwo(20);
var newNumber = function (tal) {
return twoTimesResult * tal;
};
var result2 = newNumber(20);
console.log(result2);
如果你想成为花花公子,你也可以做以下事情:
function multiplier(num, multiplier) {
var by = num * multiplier;
return function (number) {
return number * by;
};
}
var multiplyResult = multiplier(20, 2);
console.log(multiplyResult(20));
我回答这个问题也是因为我觉得这类事情很有趣 您可以采取的另一种方法是OOP方法 从您的示例中,公共乘数为20,起始常数为2 我个人会这样处理这个问题,以避免多个变量:
// Create a calc object
var Calc = (function () {
// Constructor
Calc = function () {
// Initial constant
this.current_val = 2;
}
// Prototype methods
Calc.prototype = {
// inc() method
inc: function () {
return this.current_val * 20;
}
}
// Return object
return Calc;
})();
// Object Instance
var obj = new Calc();
// Initial call to inc() -> 40
obj.current_val = obj.inc();
// Log
console.log(obj.current_val);
// Second call to inc() -> 800
obj.current_val = obj.inc();
// Log
console.log(obj.current_val);
// Third call to inc() -> 16000
obj.current_val = obj.inc();
// Log
console.log(obj.current_val);
哦,愚蠢的课程。它不允许我这样做,因为我没有严格按照它说的做,现在已经修复。无论如何,谢谢Andy!@user3006873,如果你想尝试其他东西,我在我的答案中添加了一个编辑。嗯!这对我来说有点先进,在线运行codeacademy,它只允许我通过“挑战”如果我按照他们的要求编写代码;p但我会防御性地检查它!当您共享私有成员时,IIFE语法很有用,但因为您没有任何私有成员,所以您创建闭包是没有充分理由的,并且使代码看起来比需要的更复杂。用另一个对象替换prototype会导致Calc.prototype.constructor指向Object而不是Calc.@HMR虽然我理解你的意思,但我相信每个人都对Javascript设计模式有个人偏好。我之所以选择这种方式,是因为它是一种可靠的Javascript设计模式(即,请参见Coffeescript类定义)还有一些东西可以继续增长、发展,更重要的是,可以重用。这就足够了,我从不使用闭包来模拟私有(共享或实例),所以也不必费心使用构造函数。Coffeescript和TypeScript都使用这种语法。