将函数参数声明为变量

时间:2018-04-18 18:52:27

标签: javascript function

我在JavaScript中练习函数,我想出了以下问题的解决方案:

编写一个名为tellFortune的函数,该函数有4个参数:子项数,伙伴名,地理位置,职称。 将您的财富输出到屏幕上,如下所示:"您将成为Y中的X并与N个孩子结婚。"

解决方案:

var children = N;
var partnerName = Z;
var geoLocation = Y;
var jobTitle = X;

function tellFortune(X, Y, Z, N) {
    console.log("You will be a" + X + "in" + Y + "and married to" + Z + "with" + N + "kids");
}

当我尝试运行这个程序时,我收到一个错误"未捕获的ReferenceError:N未定义'。我的方法是先将参数声明为变量然后再调用它们?

4 个答案:

答案 0 :(得分:0)

您尚未定义变量XYZ。您需要在X中创建名为jobTitle的变量或使用X而不是console.log

这是一个例子

console.log("You will be a" + jobTitle + "in" + geoLocation+ "and married to" + partnerName + "with" + children +"kids" );

答案 1 :(得分:0)

您正在声明tellFortune函数范围之外的变量。阅读variable scoping以及此示例代码,您应该能够看到出错的地方!

// function parameters X,Y, Z and N can't be read out here

function tellFortune(X, Y, Z, N) {
    // function parameters X,Y, Z and N can be read in here in here

    console.log("You will be a" + X + "in" + Y + "and married to" + Z + "with" + N + "kids");
}

答案 2 :(得分:0)

想象一下编译器如何逐行读取您的程序。当它到达行

var children = N;

它将分配" undefined"对于孩子来说,因为N是未定义的(定义的东西就是你把" var"或"让"放在名字前面)。同样,当你将N传递给你的函数时,N仍然是未定义的。

如果你在第一行定义并分配了N,那么:

var N = 3;
然后它会起作用。或者,您可以定义子项。

var children = 3;

(对于你的其他三个变量也是如此 - 它们都需要声明并赋值。)

另外:您目前还没有实际调用您的功能。您已经定义了函数的工作方式,但除非您在某处调用tellFortune()(已定义的变量传入其中),否则不会调用它。

总而言之,您可以将代码更改为:

// You assign values to these variables
var children = 3;
var partnerName = "Matilda";
var geoLocation = "100,45";
var jobTitle = X;

// Now you call the function with the assigned variables passed into it
tellFortune(children , partnerName , geoLocation , jobTitle );

// The compiler will jump to this point to figure out how to execute tellFortune.  Since children was passed as the first parameter, it will be the value X in the function.  Same with partnerName being Y, etc.
function tellFortune(X, Y, Z, N) {
    // Since X Y Z and N are defined as parameters in the line before this, the compiler knows what to put in the console.log() below.
    console.log("You will be a" + X + "in" + Y + "and married to" + Z + "with" + N + "kids");
}

答案 3 :(得分:0)

N,Z,Y和X都是代码中未定义的变量。你试图告诉JavaScript变量children的值等于变量N的值,但是你从未告诉JavaScript N是什么。

您不需要声明前四个变量,只需要在调用函数时传递所需的任何参数。你还没有这样做。不过你很亲密。删除或注释掉前四个变量,用你想要的四个字符串调用你的函数,看看它是否有效。

要调用函数,只需编写functionName(arg1, arg2, arg3, ...)即可。字符串是""所包含的任何文本。或者''。

我会把它写成一个片段,但对你来说这似乎是一种很好的做法。