【问题标题】:Output for the Javascript functionJavascript 函数的输出
【发布时间】:2020-07-06 08:46:05
【问题描述】:
<script>
 var num1=100;
 function test(){
    num2=200;
    var num1=300;
    num1=num2;
 }
 test();
 document.write(num1 +"-"+num2);
 </script>

输出为 100-200。这怎么可能……有人请解释一下

【问题讨论】:

    标签: javascript output


    【解决方案1】:

    当你使用 var 声明一个函数时,它的作用域仅限于当前的执行上下文。这意味着在您的函数内部,您要声明一个新变量 num1,其范围仅限于函数 test,而不是实际修改全局变量。

    这意味着当您访问num1 变量并将其写入文档时,您访问的是全局范围内的变量,实际上并没有改变。

    要使您的函数修改全局变量,您只需从函数中删除关键字var。这告诉 javascript 您正在更改全局变量 num1,而不是创建一个仅限于 test 函数的新变量。

    希望这会有所帮助!

    【讨论】:

      【解决方案2】:

      您已经在test 范围内重新声明了num1,因此当您在test 范围内更改num1 的值时,全局范围内的num1 不会更改。

      检查此article 它可能会帮助您了解 javascript 作用域。

      【讨论】:

        【解决方案3】:

        num1 +"-" + num2:
        您是否期望 num1-num2 中的差异?
        如果是这样,这将不起作用:
        中间的字符串"-" 强制整个东西变成一个字符串。
        如果这就是你想要的 - 对不起...... :)

        查看其他人关于变量范围的答案。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-05-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多