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是否真的是整数
我很好奇这个例子为什么要先声明变量。 然后下一行他们定义了变量是什么。这有什么原因吗?
你能不能不说
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是否真的是整数