JavaScript - typeof 操作符

欢迎,有抱负的程序员们!今天,我们将踏上一段激动人心的旅程,探索JavaScript的世界,特别是typeof操作符。如果你是编程新手,不用担心;我会一步一步地引导你理解这个概念,就像我多年来为无数学生所做的那样。所以,拿起你最喜欢的饮料,舒服地坐好,让我们开始吧!

JavaScript - typeof Operator

typeof 操作符

想象一下,你是在JavaScript世界中的侦探,你的工作是识别不同数据片段的类型。这正是typeof操作符所做的!它就像一个放大镜,帮助我们确定JavaScript中值或表达式的类型。

语法

使用typeof操作符就像吃派一样简单(谁不喜欢派呢?)。下面是如何使用它:

typeof 操作数
// 或者
typeof(操作数)

这两种形式的工作方式相同,所以选择你觉得更漂亮的那个。我个人更喜欢第一个,因为它输入起来更少,毕竟,程序员都是追求效率的!

typeof 操作符返回的数据类型

现在,让我们来看看typeof可以识别的不同类型。这就像JavaScript中数据风味的菜单:

数据类型 typeof 返回值
Number "number"
String "string"
Boolean "boolean"
Symbol "symbol"
Undefined "undefined"
Null "object"
Object "object"
Function "function"
BigInt "bigint"

如果有些看起来不熟悉,不用担心。我们将通过示例来探索每一个,让你有“啊哈!”的发现。

使用JavaScript typeof 操作符检查数字类型

让我们从数字开始。在JavaScript中,数字就像是数学运算的构建块。

console.log(typeof 42);        // "number"
console.log(typeof 3.14);      // "number"
console.log(typeof -10);       // "number"
console.log(typeof Infinity);  // "number"
console.log(typeof NaN);       // "number"

惊喜!即使是InfinityNaN(不是一个数字)在JavaScript中也被认为是数字。这就像把热狗叫做三明治——有点意外,但这就是JavaScript的风格!

使用JavaScript typeof 操作符检查字符串类型

字符串就像是数据的包装纸——它们包含文本内容。

console.log(typeof "Hello, World!");  // "string"
console.log(typeof '42');             // "string"
console.log(typeof ``);               // "string"

注意到'42'加上引号后是字符串,而不是数字。这就像给数字穿上了文本的服装!

使用JavaScript typeof 操作符检查布尔类型

布尔值是编程中的是/否、真/假。它们就像开关——开或关。

console.log(typeof true);   // "boolean"
console.log(typeof false);  // "boolean"
console.log(typeof (1 > 2)); // "boolean"

最后一个示例显示了比较结果为布尔值。这就像问,“1大于2吗?”然后直接得到“不!”(假)的回答。

使用JavaScript typeof 操作符检查符号类型

符号是唯一的标识符,就像派对上每个人都有不同名字的名牌。

console.log(typeof Symbol('unique'));  // "symbol"

现在不必太担心符号。它们是ES6的酷孩子们,但我们不会在JavaScript的每个派对上都看到它们。

使用JavaScript typeof 操作符检查未定义和空值

这里有点棘手,就像编程世界中的魔术一样。

console.log(typeof undefined);  // "undefined"
console.log(typeof null);       // "object"

等等,什么?null是一个对象?这实际上是JavaScript中的一个长期存在的bug,但由于它已经存在很长时间,修复它可能会破坏现有的代码。这就像你最喜欢的咖啡馆里那个摇摇欲坠的桌子——很烦人,但改变它可能会打扰到常客。

使用JavaScript typeof 操作符检查对象类型

对象就像是容器,可以包含各种属性和方法。

console.log(typeof {});           // "object"
console.log(typeof []);           // "object"
console.log(typeof new Date());   // "object"

是的,数组也是对象!这就好比说购物清单是一种文档——技术上是对的,尽管感觉有点奇怪。

使用JavaScript typeof 操作符检查函数类型

函数就像是编程中的动词——它们做事情!

console.log(typeof function() {});  // "function"
console.log(typeof console.log);    // "function"

函数有自己特殊的类型。这是JavaScript在说,“你很特别,函数。你有一个自己的分类!”

使用JavaScript typeof 操作符检查BigInt类型

BigInt是新的孩子,引入来处理非常非常大的数字。

console.log(typeof 1n);  // "bigint"
console.log(typeof BigInt(1));  // "bigint"

把BigInt想象成数字中的重量级冠军——当普通数字不够大时,它就来了!

JavaScript typeof 操作符在实时开发中的应用

在现实世界的编程中,typeof通常用于操作前的类型检查。这就像在开始烹饪前检查你是否有正确的食材。

function safeAdd(a, b) {
if (typeof a === "number" && typeof b === "number") {
return a + b;
} else {
return "Error: Both arguments must be numbers";
}
}

console.log(safeAdd(5, 10));  // 15
console.log(safeAdd("5", 10));  // "Error: Both arguments must be numbers"

这个函数在相加之前检查两个输入是否都是数字。这就像“仅限数字”俱乐部的保安!

JavaScript数组和typeof操作符

这里有一个要注意的地方——记住数组是对象?让我们看看它是如何工作的:

console.log(typeof [1, 2, 3]);  // "object"

那么我们如何检查数组呢?我们使用一个特殊的方法:

console.log(Array.isArray([1, 2, 3]));  // true
console.log(Array.isArray({a: 1}));     // false

这就好比有一个专门检测数组形状对象的探测器!

好了,伙计们!我们已经穿越了JavaScript中的typeof之地。记住,熟能生巧,所以玩转这些示例。在你意识到之前,你将像专业人士一样进行类型检查!快乐编码,愿你的变量总是如你所期望的类型!

Credits: Image by storyset