当前位置: 代码迷 >> JavaScript >> JavaScript新手需要将Celsius转换为Fahrenheit和Kelvin,为什么我的代码无法正常工作?
  详细解决方案

JavaScript新手需要将Celsius转换为Fahrenheit和Kelvin,为什么我的代码无法正常工作?

热度:80   发布时间:2023-06-13 12:40:42.0

我是JavaScript的新手,我有一个作业要把数字提示(Celsius)转换成Fahrenheit和Kelvin,但是我的Fahrenheight和Kelvin在运行程序时显示为undefined,有人解决方案吗?

  var celcius; var fahrenheight; var kelvin; celcius = Number(window.prompt("Enter Degree", 50)); document.write(celcius + " degrees Celcius."); function FahrenheightConvert() { var fahrenheight = Math.round(9 / 5 * (celcius + 32)); } document.write("<br>"); document.write(fahrenheight + " degrees Fahrenheight."); function KelvinConverter(){ var kelvin = (celcius + 273.15); } document.write("<br>"); document.write(kelvin + " in Kelvin."); 

直到您通过调用函数将其告知后,函数中的代码才会运行。 您永远不会调用您编写的任何函数,因此其中的转换代码永远不会运行。

在这种情况下,您可以完全删除功能,而无需执行以下操作:

var celcius;
var fahrenheight;
var kelvin;

celcius = Number(window.prompt("Enter Degree", 50));
document.write(celcius + " degrees Celcius.");

fahrenheight = Math.round(9 / 5 * (celcius + 32));
document.write("<br>");
document.write(fahrenheight + " degrees Fahrenheight.");

kelvin = (celcius + 273.15);
document.write("<br>");
document.write(kelvin + " in Kelvin.");

您的问题是可变范围之一; 您实际上并没有将celcius传递给任何一个函数。 除此之外,出于相同的原因,您不会在函数中检索分配给fahrenheightkelvin的值。

为了解决这个问题,您需要将celcius作为函数参数传递给两个函数,并确保实际调用它们:

 var celcius; var fahrenheight; var kelvin; celcius = Number(window.prompt("Enter Degree", 50)); document.write(celcius + " degrees Celcius."); function FahrenheightConvert(celcius) { var fahrenheight = Math.round(9 / 5 * (celcius + 32)); document.write(fahrenheight + " degrees Fahrenheight."); } document.write("<br>"); FahrenheightConvert(celcius); function KelvinConverter(celcius) { var kelvin = (celcius + 273.15); document.write(kelvin + " in Kelvin."); } document.write("<br>"); KelvinConverter(celcius); 

另外,您根本根本不使用函数,因为它们会产生相同的效果(因为所有变量都在同一范围内)。

2个问题。 1)您没有在函数中使用全局变量。 您正在本地重新创建一个。 您可以通过将功能更改为以下内容来解决此问题:

 function FahrenheightConvert() {
   fahrenheight = Math.round(9 / 5 * (celcius + 32));
 }

 function KelvinConverter(){
   kelvin = (celcius + 273.15);
 }

这将改为使用全局范围变量。

2)您从不调用函数,仅定义它们。 因此,您可以像这样调用它们:

FahrenheightConvert();        
KelvinConverter();

这实际上将运行您创建的代码。 最终结果是这样的:

  var celcius; var fahrenheight; var kelvin; celcius = Number(window.prompt("Enter Degree", 50)); document.write(celcius + " degrees Celcius."); function FahrenheightConvert() { fahrenheight = Math.round(9 / 5 * (celcius + 32)); } /* Actually call the funciton */ FahrenheightConvert(); document.write("<br>"); document.write(fahrenheight + " degrees Fahrenheight."); function KelvinConverter(){ kelvin = (celcius + 273.15); } /* Again, actually call the funciton */ KelvinConverter(); document.write("<br>"); document.write(kelvin + " in Kelvin."); 
PS,由于您不熟悉JavaScript,因此,我会让您知道其他选择,您可能会发现它很有用。

您还必须选择重写函数以 。 因此,您的函数将如下所示(在此示例中,我仅使用了一个):

document.write(FahrenheightConvert(celsius) + " degrees Fahrenheight.");

这将使您的通话等于华氏高度的值。 这样,您可以将您的write语句更改为:

 document.write(FahrenheightConvert(celsius) + " degrees Fahrenheight."); 

最后,我还要提到,正如评论所提到的,我的第一个选择(在PS之前)是不良设计,不建议使用。 我强烈建议改用这种方式重写您的函数。 这样,您便可以随意使用通用转换功能,而不必担心它将直接写入文档或其他内容。

您的fahrenheightkelvin变量不会被写入,因为转换器是内部函数,永远不会被调用。 由于您的所有代码都是从头到尾运行的,所以最简单的事情就是在不定义函数的情况下进行计算。

 var celcius; var fahrenheight; var kelvin; celcius = Number(window.prompt("Enter Degree", 50)); document.write(celcius + " degrees Celcius."); var fahrenheight = Math.round(9 / 5 * (celcius + 32)); document.write("<br>"); document.write(fahrenheight + " degrees Fahrenheight."); var kelvin = (celcius + 273.15); document.write("<br>"); document.write(kelvin + " in Kelvin."); 

  相关解决方案