我有一个返回值的javascript函数。但是,我无法获得返回函数外部的值。我已经研究过,无法弄清楚这个问题。它说最后一行代码中的grossResults是未定义的。回报不会让它可以访问吗?
"use script";
var hourlyRate = prompt("Enter hourly pay rate:", hourlyRate);
var totalHrsWorked = parseInt(prompt("Enter number of hours worked:", totalHrsWorked));
//function to calculate gross wages for an hourly employee
function grossWages (hourlyRate, totalHrsWorked){
var OTHours = totalHrsWorked - 40;
var regPay = (totalHrsWorked - OTHours) * hourlyRate;
var OTPay = (OTHours * (hourlyRate * 1.5)) + regPay;
grossResults = (OTHours > 0) ? OTPay : regPay;
return grossResults;
};
document.writeln("<br /><br />");
document.writeln("Pay rate entered: " + hourlyRate + "<br />");
document.writeln("Hours entered: " + totalHrsWorked + "<br />");
document.writeln("Gross Pay: $" + grossResults + "<br /><br />")
答案 0 :(得分:1)
如评论中所述,您没有调用该函数。 Javascript支持一流的函数,这意味着你可以使用字符串/数字等函数并传递它们的引用,这就是为什么它在运行时不会出错。
document.writeln("Gross Pay: $" + grossResults(hourlyRate, totalHrsWorked) + "<br /><br />")
上面的代码正确地调用了你的函数,并从你的提示中提取了你的参数!
答案 1 :(得分:0)
有一些问题。
首先是了解javascript中的范围。 JS具有函数作用域,它基本上意味着在函数内声明的变量(和函数)仅在该函数内部可见(包括其子函数)。有关详细信息,请参阅前面的内容。 What is the scope of variables in JavaScript?。我在这里跳过所有关于继承的东西,它通过原型工作,但它基本上只定义了对象之间的层次关系(因此他们可以看到他们父母所拥有的变量/函数)。
在您的示例上下文中,范围的含义是grossResults
在函数grossWages
内定义,因此在该函数外部不可见。调用函数grossWages
时(在您的示例中从未发生过,但您尝试实现的内容可能是var grossResults = grossWages()
- 在这种情况下grossWages()
会返回值它的变量grossResults
,它不会将该变量暴露给该函数之外的上下文。
注意: “使用脚本”可能应该是“使用严格”。见https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode