JavaScript中的空比较应该使用哪种方式
为了检查javascript中的对象是否为null,我看到了两种方法JavaScript中的空比较应该使用哪种方式,javascript,Javascript,为了检查javascript中的对象是否为null,我看到了两种方法 let obj = {}; 选项1 if(obj){ console.log('object exists'); } 选项2 if(!!obj === true){ console.log('object exists'); } 选择一个选项比另一个有什么好处吗?标准代码首选哪个选项 如果只想检查对象是否为空: if(obj === null) { ... } 如果只想检查对象是否为空: if(obj === null
let obj = {};
选项1
if(obj){ console.log('object exists'); }
选项2
if(!!obj === true){ console.log('object exists'); }
选择一个选项比另一个有什么好处吗?标准代码首选哪个选项 如果只想检查对象是否为空:
if(obj === null) {
...
}
如果只想检查对象是否为空:
if(obj === null) {
...
}
使用简单的==
在代码中,您没有检查对象是否为null
。相反,您的代码只是检查它是否是错误的值。请注意,JavaScript中总共有6个Falsy值,null
就是其中之一。了解更多关于他们的信息。如果只想检查变量是否为null
,以下是最好的方法:
if (obj === null) {
console.log("object is null");
} else {
console.log("object is not null");
}
使用简单的==
在代码中,您没有检查对象是否为null
。相反,您的代码只是检查它是否是错误的值。请注意,JavaScript中总共有6个Falsy值,null
就是其中之一。了解更多关于他们的信息。如果只想检查变量是否为null
,以下是最好的方法:
if (obj === null) {
console.log("object is null");
} else {
console.log("object is not null");
}
选择比较方法取决于预测数据类型的方式, 但是如果你想要一个真正安全的标准,可以使用“typeof”。 if(typeof obj==“object”){console.log('object exists');}
如果(typeof obj!=“undefined”){console.log('object exists');}选择比较方法取决于预测数据类型的方式, 但是如果你想要一个真正安全的标准,可以使用“typeof”。 if(typeof obj==“object”){console.log('object exists');}
如果(typeof obj!=“undefined”){console.log('object exists');}javascript中的对象始终是真实的,无论其上是否定义了任何属性 因此,
var obj={}
if(obj){
//this block will always be executed.
}
如果要检查对象是否已在当前词法范围中定义,请尝试:
if(typeof(obj) !== 'undefined' && obj !== null){
console.log('object exists');
}
else{
console.log('nope')
}
if(typeof(obj) !== 'undefined' && obj !== null){
console.log('object exists');
}
else{
if(Object.keys(obj).length){
//do something
}
}
如果要检查对象是否有任何属性,或者它是空对象,请尝试:
if(typeof(obj) !== 'undefined' && obj !== null){
console.log('object exists');
}
else{
console.log('nope')
}
if(typeof(obj) !== 'undefined' && obj !== null){
console.log('object exists');
}
else{
if(Object.keys(obj).length){
//do something
}
}
javascript中的对象总是真实的,不管它是否定义了任何属性 因此,
var obj={}
if(obj){
//this block will always be executed.
}
如果要检查对象是否已在当前词法范围中定义,请尝试:
if(typeof(obj) !== 'undefined' && obj !== null){
console.log('object exists');
}
else{
console.log('nope')
}
if(typeof(obj) !== 'undefined' && obj !== null){
console.log('object exists');
}
else{
if(Object.keys(obj).length){
//do something
}
}
如果要检查对象是否有任何属性,或者它是空对象,请尝试:
if(typeof(obj) !== 'undefined' && obj !== null){
console.log('object exists');
}
else{
console.log('nope')
}
if(typeof(obj) !== 'undefined' && obj !== null){
console.log('object exists');
}
else{
if(Object.keys(obj).length){
//do something
}
}
要测试值
obj
是否为对象数据类型,请尝试
if( obj and typeof obj === "object") {
// obj is an object and it's safe to access properties
}
obj
的真实性表明它不是null
,typeof
返回“object”意味着它不是其他原始数据类型
请注意,null
在JavaScript中是它自己的数据类型(null),但是由于该语言早期实现的限制,typeof null
返回“object”
相反,要测试某个值是否为null
而不是对象,只需使用严格的相等性测试:
if( obj === null) {
// the data type of obj is null
...
}
要测试值
obj
是否为对象数据类型,请尝试
if( obj and typeof obj === "object") {
// obj is an object and it's safe to access properties
}
obj
的真实性表明它不是null
,typeof
返回“object”意味着它不是其他原始数据类型
请注意,null
在JavaScript中是它自己的数据类型(null),但是由于该语言早期实现的限制,typeof null
返回“object”
相反,要测试某个值是否为null
而不是对象,只需使用严格的相等性测试:
if( obj === null) {
// the data type of obj is null
...
}
可能是重复的,您没有检查null。您正在检查obj是否有真实值。可能重复的@31piy
typeof null==“object”
,因此您可能不想使用它,除非您正在检查obj
是否未声明或实际上是未定义的
。可能是重复的,您没有检查null。您正在检查obj是否有真实值。可能重复@31piytypeof null===“object”
,因此您可能不想使用它,除非您正在检查obj
是否未声明或实际上是未定义的
。但是……当对象为null
时,这恰恰会失败!因为typeof null===“object”
但是……当一个对象是null
时,这恰恰失败了!因为typeof null==='object'
typeof
总是返回一个字符串
所以typeof(obj)===undefined
总是返回false
typeof null
将返回“object”
,所以null
也将通过测试。object.keys(obj)如果obj
是undefined
或null
typeof
总是返回一个字符串,那么typeof(obj)===undefined
将总是返回false
typeof null
将返回对象/code>,因此null
将通过测试,也是。Object.keys(obj)
如果obj
是未定义的
或空的
,则会抛出错误。