【问题标题】:The js for-loop code is printed before it is calledjs for循环代码在调用前打印
【发布时间】:2015-04-16 10:03:58
【问题描述】:

我是一名新的 Javascript 编码员,这是我在这里的第一个问题。

我有以下代码:

  1. 从名为 celsius 的变量中获取每个值
  2. 将该值传递给名为 calculate 的函数并将其转换为 华氏度。
  3. 华氏度的值取回第一个 函数,然后打印到第一个函数

function calculate() {  
    var celsius = [12, 45, 99, -40];
    
    for (i=0 ; i<celsius.length; i++) {
        document.write("The value is " + celsius[i] + " and is equal to " + count(celsius[i]) + "<br>")
    }
}

function count(num) {
    var degfarhen = 9/5 * parseFloat(num) + 32;
    degfarhen = degfarhen.toFixed(1);
    document.write(degfarhen)
}

但是会发生这种情况

53.6The value is 12 and is equal to undefined
113.0The value is 45 and is equal to undefined
210.2The value is 99 and is equal to undefined
-40.0The value is -40 and is equal to undefined

华氏度的值在句子之前打印,实际必须打印的位置未定义。

【问题讨论】:

    标签: javascript html function for-loop undefined


    【解决方案1】:

    在函数count 中,您正在调用document.write(),它将立即写入文档。

    因为这是在另一个document.write(在 for 循环中)内部调用的,所以内部的将在外部的之前写入。您看到“未定义”是因为该函数没有返回值。

    你需要做的是return degfarhencount的末尾而不是document.write-ing它..

    function count(num) {
      // calculation remains the same
      return degfarhen; 
    }
    

    【讨论】:

      【解决方案2】:

      document.write(degfarhen) 更改为return degfarhen;

      【讨论】:

      • Thangs ......但是 document.write 和 return 之间有什么区别......我的意思是为什么它们在我的代码中表现不同......(document.write 在开头和返回指定地点?)
      • document.write('text part') 函数只是简单地输出字符串,在本例中为'text part'到文档,而return会将计算的值返回给调用者,即结束你的字符串。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-09
      • 2012-06-12
      • 1970-01-01
      • 2020-04-26
      • 2016-12-21
      • 2021-09-24
      • 1970-01-01
      相关资源
      最近更新 更多