Javascript 这个范围有什么问题?
当HTML表单提交时,它应该在IF语句中运行代码,然后控制台记录它。但是我登录到控制台的只是Javascript 这个范围有什么问题?,javascript,Javascript,当HTML表单提交时,它应该在IF语句中运行代码,然后控制台记录它。但是我登录到控制台的只是未定义的。这个代码怎么了 let-inputValue=document.getElementById('nicInput').value; 让因弗查斯; 如果(/[^A-Za-z0-9]/.测试(输入值)){ 让invChars=true; }否则{ 让invChart=false; } 控制台日志(invChars)让在它出现的块的范围内创建一个新变量 所以让invChars是一个与不同的变量,让i
未定义的。这个代码怎么了
let-inputValue=document.getElementById('nicInput').value;
让因弗查斯;
如果(/[^A-Za-z0-9]/.测试(输入值)){
让invChars=true;
}否则{
让invChart=false;
}
控制台日志(invChars)
让
在它出现的块的范围内创建一个新变量
所以让invChars
是一个与不同的变量,让invChars=true代码>
前者是console.log(invChars)代码>引用,并且从不为其赋值
为了采用您的方法,您不应该在if
和else
的块中重新声明变量:
let inputValue = document.getElementById('nicInput').value;
let invChars;
if(/[^A-Za-z0-9]/.test(inputValue)) {
invChars = true;
} else {
invChart = false;
}
console.log(invChars);
这就是说,根据test()
…本身返回true
或false
的返回值来分配true
或false
是一种非常低效的方法
更简单、更快、更清晰的方法是:
let inputValue = document.getElementById('nicInput').value;
let invChars = /[^A-Za-z0-9]/.test(inputValue);
console.log(invChars);
让
在它出现的块的范围内创建一个新变量
所以让invChars
是一个与不同的变量,让invChars=true代码>
前者是console.log(invChars)代码>引用,并且从不为其赋值
为了采用您的方法,您不应该在if
和else
的块中重新声明变量:
let inputValue = document.getElementById('nicInput').value;
let invChars;
if(/[^A-Za-z0-9]/.test(inputValue)) {
invChars = true;
} else {
invChart = false;
}
console.log(invChars);
这就是说,根据test()
…本身返回true
或false
的返回值来分配true
或false
是一种非常低效的方法
更简单、更快、更清晰的方法是:
let inputValue = document.getElementById('nicInput').value;
let invChars = /[^A-Za-z0-9]/.test(inputValue);
console.log(invChars);
“”定义新的块级别变量
您希望有条件地将值赋给同一个变量invChars,因此,您的代码应该如下所示:
let inputValue = document.getElementById('nicInput').value;
let invChars;
if(/[^A-Za-z0-9]/.test(inputValue)) {
invChars = true;
} else {
invChart = false;
}
console.log(invChars);
或者,由于test()返回布尔值,您可以直接将其分配给变量:
let invChars = /[^A-Za-z0-9]/.test(inputValue);
console.log(invChars);
“”定义新的块级别变量
您希望有条件地将值赋给同一个变量invChars,因此,您的代码应该如下所示:
let inputValue = document.getElementById('nicInput').value;
let invChars;
if(/[^A-Za-z0-9]/.test(inputValue)) {
invChars = true;
} else {
invChart = false;
}
console.log(invChars);
或者,由于test()返回布尔值,您可以直接将其分配给变量:
let invChars = /[^A-Za-z0-9]/.test(inputValue);
console.log(invChars);
您声明了三个不同的let invChart
变量您声明了三个不同的let invChart
变量