【问题标题】:Javascript variable declaration and number conversion [closed]Javascript变量声明和数字转换[关闭]
【发布时间】:2015-12-06 02:36:40
【问题描述】:

我很好奇这个例子为什么要先声明变量。 然后下一行他们定义变量是什么。这是有原因的吗?

你能不能直接说

 var message = document.GetElementById("message").innerHTML;

为什么他们在 if 语句的中间声明 Number(x) ? 如果你把它放在其他 if 语句之前,它会接受一个字符串并将其转换为一个数字吗?

javascript:

<script>
function myFunction() {
    var message, x;
    message = document.getElementById("message");
    message.innerHTML = "";
    x = document.getElementById("demo").value;
    try { 
        if(x == "")  throw "empty";
        if(isNaN(x)) throw "not a number";
        x = Number(x);
        if(x < 5)    throw "too low";
        if(x > 10)   throw "too high";
    }
    catch(err) {
        message.innerHTML = "Input is " + err;
    }
}
</script>

试图理解为什么会这样写。

【问题讨论】:

  • 我的猜测是:1.) 作者习惯于编写其他语言的方式或 2.) 只是作者感觉使代码更具可读性的方式。
  • 作者让你免于困惑。他本可以写var message = ...,但由于声明提升,这将在顶部产生var

标签: javascript type-conversion conventions


【解决方案1】:

按照惯例,变量通常在函数顶部一起声明,如果可以的话,这样它们的所有名称都是显而易见的。例如,我认为 JSHint 和 JSLint 默认情况下会强制执行此操作。

第二个 2 如果条件在 x 转换为数字后完成,以防它是字符串。例如,如果变量是字符串“3”而不是数字 3,则在通过 Number(x) 转换之前,则 如果(x

【讨论】:

    【解决方案2】:

    JavaScript 有一个属性调用“提升”,它将所有声明移动到当前作用域的顶部。当然,你可以使用var message = document.GetElementById("message").innerHTML;,但实际上它会变成

    var message, x; // other variable declaration message = document.getElementById("message");

    第二个问题,因为你需要先检查 x 是否是一个真正的整数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多