Javascript 变量声明和数字转换

Javascript variable declaration and number conversion

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

你能不能不说

 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>

试图理解为什么这样写。

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

第二个 2 if 条件是在 x 转换为数字后完成的,以防它是一个字符串。例如,如果变量在被 Number(x) 转换之前是字符串“3”而不是数字 3,则 如果(x < 5) 将数字与字符串进行比较。 如果它在所有条件之前完成,它可能会抛出一个错误,例如,如果它是空的、未定义的或字母 s。

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

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

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