Javascript无法访问函数的返回值

Javascript Return value from function not accessible

本文关键字:返回值 函数 访问 Javascript      更新时间:2023-09-26

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

如注释中所述,您没有调用函数。Javascript支持一流的函数,这意味着您可以使用字符串/数字等函数并传递它们的引用,这就是为什么它在运行时不会出错的原因。

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

上面的代码正确地调用了您的函数,并使用了您从提示中提取的参数!

有一些问题。

首先是理解javascript中的作用域。JS具有函数范围,这基本上意味着在函数内部声明的变量(和函数)只在该函数(包括其子函数)内部可见。有关更多详细信息,请参阅例如。JavaScript中变量的范围是什么?。我在这里跳过了所有关于继承的内容,它通过原型来工作,但它基本上只是定义对象之间的层次关系(这样他们就可以看到父对象拥有的变量/函数)。

scope在示例上下文中的意思是grossResults是在函数grossWages内部定义的,因此在该函数外部不可见。当函数grossWages被调用时(在您的示例中从未发生过这种情况,但您试图实现的可能是var grossResults = grossWages()——在这种情况下,grossWages()返回其变量grossResults,它不会将该变量暴露给该函数之外的上下文。

注意事项:"use script"可能应该是"use strict"。看见https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode