Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript中的空比较应该使用哪种方式_Javascript - Fatal编程技术网

JavaScript中的空比较应该使用哪种方式

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

为了检查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) {
...
}
使用简单的==

在代码中,您没有检查对象是否为
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是否有真实值。可能重复@31piy
typeof 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
未定义的
空的
,则会抛出错误。