Javascript 这个范围有什么问题?

Javascript 这个范围有什么问题?,javascript,Javascript,当HTML表单提交时,它应该在IF语句中运行代码,然后控制台记录它。但是我登录到控制台的只是未定义的。这个代码怎么了 let-inputValue=document.getElementById('nicInput').value; 让因弗查斯; 如果(/[^A-Za-z0-9]/.测试(输入值)){ 让invChars=true; }否则{ 让invChart=false; } 控制台日志(invChars)让在它出现的块的范围内创建一个新变量 所以让invChars是一个与不同的变量,让i

当HTML表单提交时,它应该在IF语句中运行代码,然后控制台记录它。但是我登录到控制台的只是
未定义的
。这个代码怎么了

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
变量