为什么我们在下面的代码中声明第二个变量?

时间:2015-04-14 18:55:26

标签: javascript

当我们可以将函数的参数用作变量时,为什么要声明第二个变量(val)?

以下是codecademy的样子:

var divideByThree = function (number) {
    var val = number / 3;
    console.log(val);
};
divideByThree(6);

我做了一些改动如下:

var divideByThree = function (number) {
    number = number / 3;
    console.log(number);
};
divideByThree(6);

它工作得很好!!

2 个答案:

答案 0 :(得分:0)

在您的示例中,您不需要保留参数的原始值。但是,您可能会发现将来更容易使用额外的变量来处理更复杂的函数。

以下是一个例子:

// This function uses the parameter "rawNumber" as a variable, but also uses an extra variable "number"
function TestThis(rawNumber, p) {
    // Convert the input (string) to integer
    // parseInt returns NaN or integer.  Truncates decimals
    var number = parseInt(rawNumber);

    // Check to see if the result is NaN or is an integer
    if (isNaN(number)) {
        Log(rawNumber + " is not a number.", p); // Log is my imitation of console.log()
    }

    // will run if number is type int
    else {
        if (number > 0 && number <= 100) {
            Log(rawNumber + " is a valid number.", p);
        } else {
            Log(rawNumber + " is not between 1 and 100.", p);
        }
    }
}

您可以在此Fiddle中看到此代码。

在这个函数中,我使用了一个名为&#34; number&#34;的额外变量。在三个不同的地方。我没有必要,但比输入isNaN(parseInt(rawNumber))if(parseInt(rawNumber) > 0 && parseInt(rawNumber) <= 100)更容易。 Codecademy可能决定以这种方式教你,因为它更容易实现你可以简化你的代码而不是意识到你可以通过使用额外的变量来简化更复杂的代码。

此外,JK Price的回答会带来可读性问题。简而言之,此代码更易于阅读和理解:

function Example(number) {
    var processedNumber = 5/(Math.log(1/number*3.14 - 7));
    console.log("Message: " + (processedNumber * 2));
    console.log("Message: " + (processedNumber / 10));
}

这段代码可能有点困难:

function Example(number) {
    console.log("Message: " + ((5/(Math.log(1/number*3.14 - 7)) * 2));
    console.log("Message: " + ((5/(Math.log(1/number*3.14 - 7)) / 10));
}

答案 1 :(得分:-1)

变量应该有助于程序员更好地编写并描述更好的故事。你不能让同一个演员扮演多个角色!它做的一件事是帮助保持变量分离。

在这种情况下,变量val有助于抽象逻辑,最重要的是有助于调试。如果这是一个很长的脚本,并且您发现number不是您最初传递的脚本,那么您可能会认为这是一个错误。