当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何在Javascript中进行"软"if条件检查》经验,为你挑选了2个好方法。

就像你在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的答案是这样做的方法,虽然我不得不想知道为什么你仍然把自己放在这样的位置.:)



1> Paolo Bergan..:

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

if(self.somevar) {
    ...
}

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

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

if(typeof somevar != "undefined") {
    ...
}

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

if(isset($some_var_here)) {
    ...
}

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



2> Ryan Watkins..:

检查链的每个部分:

if (someObj && someObj.something && someObj.something.foo && someObj.something.foo.bar) {
   // stuff
}

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


请你把代码放在一个页面中,先试试自己吗?运行该行代码,仅限该行!:)
推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有