在javascript中我试图检查是否已在数组上定义了“键”,如果它没有创建它并为其分配值0。
以下代码是大型脚本的一部分,它位于一些循环中,用于更改项目,国家/地区和月份的值
console.log(typeof total_searches[project][country][month]);
if(typeof total_searches[project][country][month] !== "number");
total_searches[project][country][month] = 0;
但由于某种原因,当它第二次超过这个'if'时(所有键都是由那时定义的),它的计算结果为TRUE并为其赋值。
使用chrome进行调试时,console.log显示“number”。
我也试过了 if(!(total_searches [project] [country]中的月份))但它仍然评估为TRUE并进入
我做错了什么?
感谢
答案 0 :(得分:5)
if
之后你有一个令人讨厌的偷偷摸摸的分号。
if(typeof total_searches[project][country][month] !== "number"); // <-- here
答案 1 :(得分:1)
!==也会进行类型匹配。试试吧!=
答案 2 :(得分:1)
您的if
语句后面有一个分号,该语句被视为true
- 语句。所以下一行总是被执行,因为它被视为“只是”另一行代码。