我正在尝试显示各种javascript null检查技术的结果。 codepen
然而,当我的变量实际上为null时它会中断并且我没有得到html输出。我在控制台中收到错误“y未定义”。我知道它是未定义的,但我试图让它通过循环来给你每个测试结果。我似乎无法弄清楚可能出现的问题。任何帮助都会很棒。
//var y = "im y";
var test1 = function () {
if (typeof (y) === 'undefined') {
return "test 1 y is undefined";
} else {
return "test 1 y is defined";
}
};
var test2 = function () {
if (!y) {
return "test 2 y is undefined";
} else {
return "test 2 y is defined";
}
};
var test3 = function () {
if (y === null) {
return "test 3 y is undefined";
} else {
return "test 3 y is defined";
}
};
var test4 = function () {
if (y == null) {
return "test 4 y is undefined";
} else {
return "test 4 y is defined";
}
};
var test5 = function () {
if (typeof (y) === undefined) {
return "test 5 y is undefined";
} else {
return "test 5 y is defined";
}
};
var a = [test1, test2, test3, test4, test5];
var b = [test1(), test2(), test3(), test4(), test5()];
var somehtml = [];
$.each(a, function (index) {
somehtml.push('<pre>' + a[index] + '</pre>');
var x = b[index];
somehtml.push('<p>' + x + '</p>');
});
$("div#stuff").html(somehtml.join(""));
答案 0 :(得分:0)
简单检查如下
if (y) {
alert("defined");
return "test 1 y is defined";
} else {
alert("not defined");
return "test 1 y is undefined";
}
答案 1 :(得分:0)
首先,undefined!= null。第二,未定义!='未定义'。
您的代码示例按预期运行。我建议你阅读javascript type coercion and truthy/falsy values。然后开始使用javascript文件顶部的"use strict";以避免混淆。
答案 2 :(得分:0)
抱歉,我没有正确理解。我只从评论中了解您的问题。 。您在控制台中收到错误,因为您正在运行其他测试,如
if (!y) {
和
if (y === null) {
即使y
为undefined
,也会在您的控制台中触发错误。
你的逻辑应该是,如果找到变量undefined
,那么不要做其他测试,否则就做。
测试
if (typeof (y) === 'undefined') {
仅当变量未定义且空值将通过时,才为真
请参阅this fiddle。这有我传达的想法。还有一个建议是你可以想到链接函数而不是在循环中触发它们。