当前位置: 首页 > 面试题库 >

等同于JavaScript isset()

方子安
2023-03-14
问题内容

在PHP中可以做到if(isset($array['foo'])) { ... }。在JavaScript中,您通常会使用if(array.foo) { ... }相同的方法,但这并不完全相同。如果array.foo确实存在,但条件是false0(或可能还有其他值),则条件也将评估为false 。

issetJavaScript 中PHP的完美替代品是什么?

从更广泛的意义上讲,有关JavaScript处理不存在的变量,没有值的变量等的通用完整指南会很方便。


问题答案:

我通常使用typeof运算符:

if (typeof obj.foo !== 'undefined') {
  // your code here
}

"undefined"如果该属性不存在或其值是,它将返回undefined

if (obj.hasOwnProperty('foo')) {
  // your code here
}

in运算符:

if ('foo' in obj) {
  // your code here
}

后两者之间的区别在于,该hasOwnProperty方法将检查属性是否 物理 存在于对象上(该属性未继承)。

in运营商将检查所有属性在原型链,如到达了:

var obj = { foo: 'bar'};

obj.hasOwnProperty('foo'); // true
obj.hasOwnProperty('toString'); // false
'toString' in obj; // true

如您所见,在检查方法时会hasOwnProperty返回false,而in操作员会返回,该方法在原型链中定义,因为它继承了form。true``toString``obj``Object.prototype



 类似资料:
  • 问题内容: 我正在寻找一种等效于C / PHP 或C#/ Java程序员(适用于.NET)的JavaScript 。 我的基本要求是现在使用数字的千位分隔符格式,但是可以处理很多组合(包括日期)的东西会很好。 我意识到Microsoft的Ajax库提供了的版本,但我们不希望该框架的全部开销。 问题答案: 从ES6开始,您可以使用模板字符串: 除此以外: 尝试sprintf()for JavaScr

  • 问题内容: 我在Windows Server 2008上使用SQL Server 2008 Enterprise。我想从前11位到前20位选择结果(例如,我只对第11位到第20位结果感兴趣)。任何想法如何有效地在tsql中编写此查询? 在此先感谢,乔治 问题答案: 不幸的是,SQL Server没有提供类似于MySQL语法的任何东西。但是,您可能想要尝试使用派生表,如下所示:

  • 问题内容: 这是执行字符串替换的两种方法: 如何使用Java做与第一种方法类似的操作? 问题答案: 或更短:

  • 问题内容: 我需要能够生成运行查询,该查询将返回下表中的ID的下一个值: 在Oracle中,您可以在序列上调用NEXTVAL,它为您提供下一个序列(注意:不必在表上进行插入)。 谷歌搜索后,我发现您可以使用以下查询找到auto_increment的当前值: 问题是我希望每次查询该值时该值都增加。在Oracle中,当您调用nextval时,即使不将行插入表中,序列的值也会增加。 有什么方法可以修改上

  • 问题内容: 实现与Java等效的C ++的首选方法是什么? 问题答案: 尝试使用: 这要求你的编译器启用rtti支持。 编辑:我对这个答案有很好的评论! 每次需要使用dynamic_cast(或instanceof)时,最好问问自己是否必要。通常,这是不良设计的标志。 典型的解决方法是将要检查的类的特殊行为放入基类的虚函数中,或者引入诸如访问者之类的东西,你可以在不更改接口的情况下为子类引入特定行

  • 问题内容: 显然,这比我想象的要难找到。而且甚至很简单… 是否有与Javascript中内置的PHP htmlspecialchars等效的功能?我知道自己很容易实现,但是使用内置函数(如果可用)会更好。 对于不熟悉PHP的人,htmlspecialchars可将类似的内容转换为 我知道这一点,因此不能这样工作。 问题答案: 解决方案代码存在问题-它只会转义每个特殊字符的第一次出现。例如: 这是正