检查Javascript对象未定义

时间:2018-07-16 11:12:22

标签: javascript

更新

我正在尝试测试是否未定义Javascript变量。

如何制作缺少变量或未定义的对象

在谢谢您是否愿意提供帮助之前

这是我的代码

var mydata = {
  p001: "Product 1",
  p002: "Product 2",
  p003: "Product 3"
}

function test(e) {
  if (mydata === undefined || mydata === null) {
    document.getElementById("demo").innerHTML = "<em>No data</em>";
  } else {
    document.getElementById("demo").innerHTML = mydata[e];
  }
}

var mydata = {
  p001: "Product 1",
  p002: "Product 2",
  p003: "Product 3"
}

function test(e) {
  if (mydata === undefined || mydata === null) {
    document.getElementById("demo").innerHTML = "<em>No data</em>";
  } else {
    document.getElementById("demo").innerHTML = mydata[e];
  }
}
#demo {
  padding: 10px;
  margin: 0;
  border: 1px solid #2f9fd2;
  border-radius: 4px;
  background: #daf3ff;
}
<p>
  <button onclick='test("p001");'>Product 1</button>
  <button onclick='test("p002");'>Product 2</button>
  <button onclick='test("p003");'>Product 3</button>
  <button onclick='test("p10000");'>Test undefined</button>
</p>
<div id="demo"></div>

对不起,我的英语不好

谢谢

3 个答案:

答案 0 :(得分:1)

我认为这就是您想要的。

只需检查e中的键mydata没有值。

顺便说一句,这里没有数组。使用适当的术语很重要。您正在使用对象,并且要检查其属性是否已定义。

var mydata = {
	p001:"Product 1",
	p002:"Product 2",
	p003:"Product 3"
}

function test(e) {
  if (!mydata[e]) {
    document.getElementById("demo").innerHTML = "<em>No data</em>";	
	} else {
    document.getElementById("demo").innerHTML = mydata[e];
	}
}
#demo {
    padding: 10px;
    margin: 0;
    border: 1px solid #2f9fd2;
    border-radius: 4px;
    background: #daf3ff;
}
<p>
  <button onclick='test("p001");'>Product 1</button>
  <button onclick='test("p002");'>Product 2</button>
  <button onclick='test("p003");'>Product 3</button>
  <button onclick='test("p10000");'>Test undefined</button>
</p>

<div id="demo"></div>

答案 1 :(得分:0)

您可以延长对undefined值的检查。

if (mydata === undefined || mydata === null || mydata[e] === undefined) {
                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^

var mydata = {
	p001:"Product 1",
	p002:"Product 2",
	p003:"Product 3"
}

function test(e){
   if (mydata === undefined || mydata === null || mydata[e] === undefined) {
    	document.getElementById("demo").innerHTML = "<em>No data</em>";	
	} 
    else {
    	document.getElementById("demo").innerHTML = mydata[e];
	}
}
#demo {
    padding: 10px;
    margin: 0;
    border: 1px solid #2f9fd2;
    border-radius: 4px;
    background: #daf3ff;
}
<p>
  <button onclick='test("p001");'>Product 1</button>
  <button onclick='test("p002");'>Product 2</button>
  <button onclick='test("p003");'>Product 3</button>
  <button onclick='test("p10000");'>Test undefined</button>
</p>

<div id="demo"></div>

答案 2 :(得分:0)

我相信不需要对同一件事进行两次检查:

if (mydata === undefined || mydata === null) {
        document.getElementById("demo").innerHTML = "<em>No data</em>"; 
    } 

使用==运算符代替此操作,基本上会导致null == undefined,因此这最终将为您保存===来检查精确匹配项,但{{1} }会为您提供==null的真实性,因为它会为您执行类型强制

undefined