一个对象的未定义变量如何调试这个?

时间:2015-11-27 14:29:43

标签: javascript types undefined

所以我对JavaScript很新,而且真的不是我的一杯茶。 我们在大型代码库中遇到了一些问题,其代码看起来有点像:

var no = {somecontent:"text"};//Just any random object
document.write(no.length);
if(no.length != 0){
    document.write("Something is in this list!");
}
if(typeof(no.length) == "undefined"){
    document.write("OH GOD WHY?! THE LIES!");
}

减去最后一次写作,我们刚刚得到了'!= 0'检查我们假设是一个数组的东西的长度。由于它是Undefined类型,它只返回true并假设"列表中的某些内容"。这显然导致了很多问题,我们担心代码库中存在更多这些错误。 (现在1500行)

所以现在我的问题是。是否有任何类型的java解析器/检查器/编译器以错误或警告的形式捕获它,如:"您正在尝试测试X而对象/参数是"未定义"! " ?

我认为这一定是一件很常见的事情,特别是当程序员对这门语言缺乏经验时。 (来自Java / C#)但除了添加以下内容之外我无法找到任何答案:" typeof(no.length)==" undefined""代码中的每个if语句。这似乎有些过度,可能会在运行时猛烈抨击地面性能。

非常感谢任何有关此问题的帮助!

提前致谢, Smileynator

1 个答案:

答案 0 :(得分:1)

听起来您正在寻找工具来自动检查大型javascript文件以确保类型安全。

您可以查看Flow, 或者博文5 attempts at type safety in javascript