Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript错误,返回值为,返回值为_Javascript_Math_Return_Var - Fatal编程技术网

Javascript错误,返回值为,返回值为

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(

我很抱歉为这个noob的东西烦恼,但现在这一切都是新的。但是学习很慢。 在第一行代码中,我得到一个返回值(在这段代码中,我得到20*2=40。在下一阶段,我想将返回值(40)乘以20.=800。因此,在结果中,它将显示40和800。但我只得到它在发件箱[函数]中,它说。还有一条消息:“看起来你没有打印newNumber的值。”。 我做错了什么?谢谢你的帮助

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都使用这种语法。