当 HTML 表单提交时,它应该运行 IF 语句内的代码,然后控制台记录它。但我登录到控制台的所有内容都是未定义
。这段代码有什么问题?
let inputValue = document.getElementById('nicInput').value;
let invChars;
if(/[^A-Za-z0-9]/.test(inputValue)) {
let invChars = true;
} else {
let invChart = false;
}
console.log(invChars);
最佳答案
let
在它出现的 block 的范围内创建一个新变量。
所以let invChars;
是与 let invChars = true;
不同的变量.
console.log(invChars);
是前者指的是,并且您从未为其分配值。
要采用您的方法,您应该简单地不要在 if
block 内重新声明变量。和else
:
let inputValue = document.getElementById('nicInput').value;
let invChars;
if(/[^A-Za-z0-9]/.test(inputValue)) {
invChars = true;
} else {
invChart = false;
}
console.log(invChars);
<小时/>
也就是说,这是一种极其低效的分配 true
的方式。或false
基于test()
的返回值...它本身返回 true
或false
.
简单地说,会更容易、更快、更清晰:
let inputValue = document.getElementById('nicInput').value;
let invChars = /[^A-Za-z0-9]/.test(inputValue);
console.log(invChars);
关于javascript - 这个范围有什么问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50200692/