📜  使用 typeof bar === “object” 来确定 bar 是否是对象的潜在陷阱是什么?

📅  最后修改于: 2022-05-13 01:56:46.459000             🧑  作者: Mango

使用 typeof bar === “object” 来确定 bar 是否是对象的潜在陷阱是什么?

JavaScript 中的typeof运算符返回一个字符串,指示操作数的数据类型,无论是变量、函数还是对象。

语法:以下是typeof运算符的语法:

typeof operand
// OR 
typeof(operand)

参数:它采用以下参数:

  • 操作数:需要计算其类型的表达式。

示例:演示typeof运算符的基本示例。

Javascript


Javascript


Javascript


Javascript
const bar = null;
  
 // Logs false
console.log((bar !== null) && (typeof bar === 'object'));


Javascript


Javascript


Javascript


输出:

string
number
boolean
undefined
object

JavaScript 中的对象是属性的集合,这些属性通常以键值对的形式出现。它可以被认为是一种非原始数据类型。

创建对象的三种不同方法:

  • 通过对象字面量
  • 通过使用任何对象构造函数
  • 通过直接在 JavaScript 中创建 Object 类的实例。

示例:通过对象字面量创建对象。

句法:

const object = {property1: value1, property2: value2};  

Javascript


输出:

{
   name: 'Rajat',
   age: 30,
   gender: 'Male'
}

示例:使用任何对象构造函数创建对象

Javascript


输出:

true

如果将简单的检查添加到预先存在的代码中,则可以避免这种情况。也就是说,检查bar !== null 是否。现在它将产生预期的输出( false )。

Javascript

const bar = null;
  
 // Logs false
console.log((bar !== null) && (typeof bar === 'object'));

输出:

false

直到这个阶段,假设bar是一个变量。但是如果bar是一个函数呢?上面的解决方案将返回false ,这是大多数情况下所需的输出,但如果存在预期输出为true的场景,则代码需要稍微修改如下:

Javascript


输出:

true

如果bar是一个数组,那么上面的解决方案将返回true ,这是在这种情况下所需的输出,因为数组被视为对象,但如果存在预期输出为false的情况,则可以修改代码,如下所示:

Javascript


输出:

false

最后一种替代方法对数组、空值和函数返回false ,但对对象返回true 。代码如下所示:

Javascript


输出:

true