Javascript变量声明和数字转换

Javascript变量声明和数字转换,javascript,type-conversion,conventions,Javascript,Type Conversion,Conventions,在这个例子中,我很好奇为什么首先声明变量。 然后下一行定义变量是什么。这有什么原因吗 你能不能说 var message = document.GetElementById("message").innerHTML; 为什么他们在if语句的中间声明数字(x)? 如果你把它放在另一个If语句之前,它会接受一个字符串并将其转换成一个数字吗 javascript: <script> function myFunction() { var message, x; mess

在这个例子中,我很好奇为什么首先声明变量。 然后下一行定义变量是什么。这有什么原因吗

你能不能说

 var message = document.GetElementById("message").innerHTML;
为什么他们在if语句的中间声明数字(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>

函数myFunction(){
var消息,x;
message=document.getElementById(“消息”);
message.innerHTML=“”;
x=document.getElementById(“demo”).value;
试试{
如果(x==“”)抛出“空”;
如果(isNaN(x))抛出“不是数字”;
x=数量(x);
如果(x<5)抛出“过低”;
如果(x>10)抛出“太高”;
}
捕捉(错误){
message.innerHTML=“输入为”+错误;
}
}

试图理解为什么它是这样写的。

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

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

JavaScript有一个属性调用“highting”,它将所有声明移动到当前范围的顶部。当然,您可以使用
var message=document.GetElementById(“message”).innerHTML,但实际上它将成为

var消息,x;
//其他变量声明
message=document.getElementById(“消息”)


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

我的猜测是:1)作者习惯于编写其他语言的方式,或2)正是作者感觉的方式使代码更具可读性。作者将您从ambuguity中解救出来。他本可以编写
var message=…
,但由于声明的提升,这将在顶部生成
var