Javascript 在for中处理未定义的。。。环的?
假设我的代码如下所示:Javascript 在for中处理未定义的。。。环的?,javascript,Javascript,假设我的代码如下所示: const days = ['Monday', 'Tuesday']; for (const day of days) { console.log(day); } 它打印“星期一”和“星期二” 如果由于任何原因,days未定义,那么我会得到一个运行时错误 我可以通过输入如下代码来处理此问题: if (undefined == days) { // logic here } 对我来说,这似乎有点笨重。有没有办法让用于。。。是否忽略未定义的值?基本上,将其视为零
const days = ['Monday', 'Tuesday'];
for (const day of days) {
console.log(day);
}
它打印“星期一”和“星期二”
如果由于任何原因,days
未定义,那么我会得到一个运行时错误
我可以通过输入如下代码来处理此问题:
if (undefined == days) {
// logic here
}
对我来说,这似乎有点笨重。有没有办法让
用于。。。是否忽略未定义的值?基本上,将其视为零长度数组,这样for循环中的逻辑就不会执行,但也不会引发错误。您可以始终在括号块中使用forEach和逻辑or
(days||[]).forEach(day=>{console.log(day)});
我想你也可以在for循环中使用它
for(let day of (days||[])) {
console.log(day);
}
您可以始终在括号块中使用forEach和逻辑or
(days||[]).forEach(day=>{console.log(day)});
我想你也可以在for循环中使用它
for(let day of (days||[])) {
console.log(day);
}
检查空值的最佳方法是在使用变量之前对其进行初始化,该变量可以是字符串、对象或数组。通过这种方式,程序可以理解变量,并且可以很容易地为您推荐函数
//Initializing Varable
let stringVariable = '' ;
let objectVariable = {};
let arrayVariable = [] ;
就你而言
let days = []
for(let day of (days)) {
console.log(day);
}
检查空值的最佳方法是在使用变量之前对其进行初始化,该变量可以是字符串、对象或数组。通过这种方式,程序可以理解变量,并且可以很容易地为您推荐函数
//Initializing Varable
let stringVariable = '' ;
let objectVariable = {};
let arrayVariable = [] ;
就你而言
let days = []
for(let day of (days)) {
console.log(day);
}
不可以。如果数组引用变量可能是未定义的
,则必须对其进行显式测试。您还可以使用days=days | |[]为
设置
。我现在在手机上,但是会不会(const day of(days | |[])
不工作?虽然这很难看,但在依赖变量之前,它绝对应该经过测试。我感觉我是在你编辑时输入的。Fwiw:Lodash将未定义视为空数组。例如“each(未定义,el=>…)”忽略它而不是测试它可能会造成未来的头痛。如果数组引用变量可能是未定义的,则必须对其进行显式测试。您还可以使用days=days | |[]为
设置
。我现在在手机上,但是会不会(const day of(days | |[])
不工作?虽然这很难看,但在依赖变量之前,它绝对应该经过测试。我感觉我是在你编辑时输入的。Fwiw:Lodash将未定义视为空数组。例如“u.each(未定义,el=>…)”忽略它而不是测试它可能会造成未来的麻烦