Javascript函数返回值无法访问

时间:2014-10-02 20:18:11

标签: javascript

我有一个返回值的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 />")   

2 个答案:

答案 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