就像你在php中所做的那样:
if (@$some_var_exists) // do stuff
如何在Javascript中执行此类操作而不会出现错误?
谢谢
编辑:谢谢你的答案.但是,我试图解决的问题是如何在对象深处检查变量是否存在,例如:
if (someObj.something.foo.bar) // This gives an error in the browser if "someObj.something.foo" is not defined.
Paolo Bergan.. 11
要检查是否定义了变量,您可以执行以下操作:
if(self.somevar) { ... }
正如先生在评论中指出的那样,这self
部分很重要.
或者,如果您希望更明确,您可以:
if(typeof somevar != "undefined") { ... }
您检查PHP var的方式也不是很整洁或者是最佳实践,因为@
错误抑制器很昂贵,在这种情况下不是必需的.你可以isset
像这样使用:
if(isset($some_var_here)) { ... }
编辑:
对于你更具体的问题,我认为@Ryan Watkins的答案是这样做的方法,虽然我不得不想知道为什么你仍然把自己放在这样的位置.:)
要检查是否定义了变量,您可以执行以下操作:
if(self.somevar) { ... }
正如先生在评论中指出的那样,这self
部分很重要.
或者,如果您希望更明确,您可以:
if(typeof somevar != "undefined") { ... }
您检查PHP var的方式也不是很整洁或者是最佳实践,因为@
错误抑制器很昂贵,在这种情况下不是必需的.你可以isset
像这样使用:
if(isset($some_var_here)) { ... }
编辑:
对于你更具体的问题,我认为@Ryan Watkins的答案是这样做的方法,虽然我不得不想知道为什么你仍然把自己放在这样的位置.:)
检查链的每个部分:
if (someObj && someObj.something && someObj.something.foo && someObj.something.foo.bar) { // stuff }
因为表达式是从左到右计算的,并且一旦找到false就返回,它不会导致错误.因此,如果"someObj"存在,但"sometObj.something"不存在,它将返回false并且永远不会执行将导致错误的someObj.something.foo的测试.