如何在Javascript中进行"软"if条件检查

ada*_*Lev 4 javascript

就像你在php中所做的那样:

if (@$some_var_exists)
    // do stuff
Run Code Online (Sandbox Code Playgroud)

如何在Javascript中执行此类操作而不会出现错误?

谢谢

编辑:谢谢你的答案.但是,我试图解决的问题是如何在对象深处检查变量是否存在,例如:

if (someObj.something.foo.bar)
  // This gives an error in the browser if "someObj.something.foo" is not defined.
Run Code Online (Sandbox Code Playgroud)

Pao*_*ino 11

要检查是否定义了变量,您可以执行以下操作:

if(self.somevar) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

正如先生在评论中指出的那样,这self部分很重要.

或者,如果您希望更明确,您可以:

if(typeof somevar != "undefined") {
    ...
}
Run Code Online (Sandbox Code Playgroud)

您检查PHP var的方式也不是很整洁或者是最佳实践,因为@错误抑制器很昂贵,在这种情况下不是必需的.你可以isset像这样使用:

if(isset($some_var_here)) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

编辑:
对于你更具体的问题,我认为@Ryan Watkins的答案是这样做的方法,虽然我不得不想知道为什么你仍然把自己放在这样的位置.:)


Rya*_*ins 11

检查链的每个部分:

if (someObj && someObj.something && someObj.something.foo && someObj.something.foo.bar) {
   // stuff
}
Run Code Online (Sandbox Code Playgroud)

因为表达式是从左到右计算的,并且一旦找到false就返回,它不会导致错误.因此,如果"someObj"存在,但"sometObj.something"不存在,它将返回false并且永远不会执行将导致错误的someObj.something.foo的测试.

  • 请你把代码放在一个页面中,先试试自己吗?运行该行代码,仅限该行!:) (2认同)