2014-10-02 117 views
-1

我有一个javascript函数返回一个值。但是,我无法让这个值返回到函数之外。我已经研究过并且无法弄清楚这个问题。它说最后一行代码中的grossResults是未定义的。回报是否会使其无法访问?Javascript函数返回值无法访问

"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 />") 
+3

你在哪里调用'grossWages'您只需定义的函数,你没有把它的代码函数内部从未执行过,我推荐阅读[** JavaScript教程**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide)b在继续进行之前,特别是[关于函数](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions)。 – 2014-10-02 20:19:43

+1

我相信最后一行的意思是:'document.writeln(“Gross Pay:$”+ grossWages(hourlyRate,totalHrsWorked)+“

”)' – LcSalazar 2014-10-02 20:26:11

回答

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

1

正如评论中所提到的,您并未调用该函数。 Javascript支持一流的函数,这意味着你可以使用像字符串/数字这样的函数并传递它们的引用,这就是为什么当它运行时不会出错。

document.writeln("Gross Pay: $" + grossResults(hourlyRate, totalHrsWorked) + "<br /><br />") 

上面的代码正确地调用了你的函数,你的参数是从提示中拉入的!