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
。