在javascript中测试变量是否为null而不会导致未定义的错误

在javascript中测试变量是否为null而不会导致未定义的错误,javascript,jquery,null,Javascript,Jquery,Null,我试图显示各种javascript空检查技术的结果。 然而,当我的变量实际为空时,它会中断,并且我没有得到html输出。控制台中出现错误“y未定义”。我知道它是未定义的,但我正试图让它通过循环来给出每个测试结果。我似乎不知道什么地方出了问题。任何帮助都会很好 //var y = "im y"; var test1 = function () { if (typeof (y) === 'undefined') { return "test 1 y is undefined"; } el

我试图显示各种javascript空检查技术的结果。

然而,当我的变量实际为空时,它会中断,并且我没有得到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(""));
//var y=“im y”;
var test1=函数(){
如果(类型(y)==‘未定义’){
返回“测试1 y未定义”;
}否则{
返回“定义了测试1 y”;
}
};
var test2=函数(){
如果(!y){
返回“测试2 y未定义”;
}否则{
返回“定义了测试2 y”;
}
};
var test3=函数(){
如果(y==null){
返回“测试3 y未定义”;
}否则{
返回“定义了测试3 y”;
}
};
var test4=函数(){
如果(y==null){
返回“测试4 y未定义”;
}否则{
返回“定义了测试4 y”;
}
};
var test5=函数(){
if(类型(y)==未定义){
返回“测试5 y未定义”;
}否则{
返回“定义了测试5Y”;
}
};
var a=[test1,test2,test3,test4,test5];
var b=[test1(),test2(),test3(),test4(),test5()];
var somehtml=[];
$.each(a,函数(索引){
somehtml.push(“”+a[index]+“”);
var x=b[指数];
somehtml.push(''+x+'

'); }); $(“div#stuff”).html(somehtml.join(“”);
如下简单检查

if (!y) {

首先,未定义!=无效的第二,未定义!='“未定义”


您的代码示例按预期运行。我建议你读一下。然后开始在javascript文件的顶部使用,以避免混淆。

对不起,我没有正确理解。我仅从评论中理解您的问题。 。您在console中收到错误,因为您正在运行其他测试,如

if (y === null) {

即使
y
未定义的
,也会在控制台中触发错误

您的逻辑应该是这样的,如果发现变量
未定义
,则不要执行其他测试,否则就执行这些测试

测试

仅当变量未定义且将传递空值时,才会为true

根据以下评论更新
请看。这就是我传达的想法。还有一个建议是,您可以考虑链接函数,而不是在循环中触发它们。

null
未定义的
在JavaScript中是不同的。另外,你的代码需要放在你的问题中,而不是放在第三方网站上。你应该尝试将重要的代码片段放在问题中。你可以尝试打开web控制台,看到js错误。这就是问题所在,比如说,我注释掉var y=im y我的控制台,然后给我一个错误,y是未定义的,没有html输出。我想让我的函数返回未定义的内容。@meagar抱歉,我编辑了我的文章。这里的人通常会要求一把小提琴或类似的东西。我做这个的目的是为了展示不同的函数返回什么。我已经编辑了我的示例。现在我需要它返回undefined。我得到“test1y未定义”。这是好的,这是人们所期望的。问题是试图在html中显示此内容。
if (y === null) {
if (typeof (y) === 'undefined') {