相当于PHP的JavaScript

时间:2012-11-25 16:24:57

标签: javascript variables undefined

  

可能重复:
  php isset() equivalent in javascript

PHP示例:http://codepad.viper-7.com/vo4wGI

<?php
var_dump( isset($something['deep']->property) ); // false
# because well, there is no such thing defined at all

JS类似于:http://jsfiddle.net/psycketom/Lp83m/但不起作用,因为浏览器似乎在尝试解析它的类型之前首先查找该值,并且,如果找不到它,则会得到

console.log( typeof something['deep'].property ); // Uncaught ReferenceError: something is not defined 

JavaScript中是否有一个本机函数可以正确解析深度未定义的属性?

2 个答案:

答案 0 :(得分:2)

你可以编写一个检查对象本身和属性的函数:

function isset(obj, prop) {
  return typeof obj !== 'undefined' ? obj.hasOwnProperty(prop) : false;
}
你会这样称呼它:

myObj = {
  "myprop1": "myvalue1"
};

isset(myObj, "myprop1"); // returns true
isset(myObj, "anotherprop"); // returns false
isset(); // returns false

编辑:回答你的问题,没有本地函数没有这样做,你必须自己编写,如果你想要深入检查对象(如果属性存在于对象内部)。你可以递归。但是我没有看到这样做的任何意义,因为你不知道属性存在于哪个“级别”(你可以返回它,但是你没有一个带有布尔返回值的isset函数)

答案 1 :(得分:2)

如果var是变量你必须检查,这应该有用。

  if (typeof(var) != 'undefined' && var != null ) {
       //do something
    }