使用 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