【发布时间】:2018-04-12 21:58:00
【问题描述】:
拿着这个sn-p,
var a = {
}
if(typeof a.c === 'undefined'){
console.log('inside if');
}
if(a.c === undefined){
console.log('inside if');
}
if 的结果都是 true。 特定于某些浏览器的这两种说法有什么不同吗?
另外,在我的上一个项目中,我已经多次使用typeof a.c == 'undefined' 来检查json 数据中的值。
现在,我知道这不是好方法,因为某些值也可能是 undefined,所以我的逻辑会失败。
我应该使用hasOwnProperty。
但我确信 undefined 不会有任何值,我可以使用 typeof a.c == 'undefined' 代替 hasOwnProperty 还是应该将我所有的 typeof 更改为 hasOwnProperty
【问题讨论】:
-
只是一个评论:这也是我所看到的:github.com/olegskl/is.js/blob/master/is.js#L79
-
另一种方法:
if (a.c === (function(u) { return u })()) {... -
@FlorianMargaine,在你的链接中,我看到了
variable === void 0;,现在是什么? -
@Jashwant developer.mozilla.org/en/JavaScript/Reference/Operators/…
The void operator evaluates the given expression and then returns undefined.所以它评估0(这意味着它什么都不做)然后它返回undefined。
标签: javascript