【问题标题】:Wrong result of JavaScript function (math operations)JavaScript 函数的错误结果(数学运算)
【发布时间】:2016-08-21 02:13:40
【问题描述】:

谁能帮我分解这个脚本并告诉我结果如何 30105?非常感谢大家

function one(numOneIn) {

two(numOneIn * 3); //1x3

document.write (numOneIn); //3

}

function two(aNumberIn) { 

document.write (aNumberIn); //1

}

function three(numIn) {

one(numIn * 2); 

document.write (numIn);

}

three(5);

【问题讨论】:

  • 其实是"30"+"10"+"5"
  • 我不知道这些数字是从哪里来的

标签: javascript


【解决方案1】:

two() 写入 30

one() 写入 10

three() 写入 5

document.write() 没有任何格式化程序将在光标最后离开的位置之后的页面上绘制/写入。

如果你给document.write()添加一些格式,你就会明白我的意思。

尝试为<br/>添加前缀或后缀为document.write()

EG:把document.write (numOneIn);改写成document.write ("<br/>"+numOneIn);

【讨论】:

    【解决方案2】:

    这是您发布的代码的格式合理的版本

    1.  function one(numOneIn) {
    2.      two(numOneIn * 3);
    3.      document.write(numOneIn);
    4.  }
    5.  function two(aNumberIn) {
    6.      document.write(aNumberIn);
    7.  }
    8.  function three(numIn) {
    9.      one(numIn * 2);
    10.     document.write(numIn);
    11. }
    12. three(5);
    

    让我们看看它是如何执行的。

    前几组(1-4、5-7、8-10)是function 定义。它们在被调用之前不会执行。

    执行的第一行是three(5)(第12行)。

    它在8 行调用three 函数,将5 的值传递给numIn 参数。

    执行的下一行是one(numIn * 2)(第 9 行)。

    它在1 行调用one 函数,将10 (5 * 2) 的值传递给numOneIn 参数。

    执行的下一行是two(numOneIn * 3)(第2行)。

    它在5 行调用two 函数,将30 (10 * 3) 的值传递给aNumberIn 参数。

    执行的下一行是 document.write(aNumberIn)(第 6 行),它将 '30' 添加到 DOM,因为 aNumberIn 被强制转换为字符串。

    第 7 行结束对two 的调用。

    执行的下一行是 document.write(numOneIn)(第 3 行),它将 '10' 添加到 DOM,因为 numOneIn 被强制转换为字符串。

    第 4 行结束对one 的调用。

    执行的下一行是 document.write(numIn)(第 10 行),它将 '5' 添加到 DOM,因为 numIn 被强制转换为字符串。

    第 11 行结束对three 的调用。

    脚本已完成执行。

    DOM 的最终状态是 '30105' 的字符串。

    【讨论】:

      【解决方案3】:

      三(5)

      调用三个,传递数字5,然后:

      一个(numIn * 2);

      调用 one,传递 5 x 2 => 10,然后:

      两个(numOneIn * 3)

      调用两个,传递10 x 3 => 30,然后

      两个将“30”作为字符串写入文档。

      控制返回到 one,它将传递给它的值 (10) 作为字符串写入。

      控制返回到三个,它将传递给它的值(5)作为字符串写入。

      所以最后的字符串是“30105”。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-22
        • 1970-01-01
        • 2016-02-28
        • 1970-01-01
        相关资源
        最近更新 更多