如何实现JavaScript isset() equivalent?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (331)

在PHP中可以做到if(isset($array['foo'])) { ... },在JavaScript中经常使用if(array.foo) { ... }相同的方法,但这不是完全相同的语句。如果array.foo确实存在,条件也将评估为false,但是false或者0(也可能是其他值)。issetJavaScript 中PHP的等价物是什么?

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

提问于
用户回答回答于

我一般使用typeofoperator:

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

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

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

和inoperator:

if ('foo' in obj) {
  // your code here
}
var obj = { foo: 'bar'};

obj.hasOwnProperty('foo'); // true
obj.hasOwnProperty('toString'); // false
'toString' in obj; // true
用户回答回答于
    module.exports = function isset () {
  //  discuss at: http://locutus.io/php/isset/
  // original by: Kevin van Zonneveld (http://kvz.io)
  // improved by: FremyCompany
  // improved by: Onno Marsman (https://twitter.com/onnomarsman)
  // improved by: Rafał Kukawski (http://blog.kukawski.pl)
  //   example 1: isset( undefined, true)
  //   returns 1: false
  //   example 2: isset( 'Kevin van Zonneveld' )
  //   returns 2: true

  var a = arguments
  var l = a.length
  var i = 0
  var undef

  if (l === 0) {
    throw new Error('Empty isset')
  }

  while (i !== l) {
    if (a[i] === undef || a[i] === null) {
      return false
    }
    i++
  }

  return true
}

phpjs.org主要是支持Locutus的,参考链接http:/locutus.io/php/var/isset

扫码关注云+社区

领取腾讯云代金券