详解JavaScript数据类型和typeof运算符

每种编程语言都有自己的数据类型。

例如,“6”是一个数字,“Hello”是一个字符串,“function(){}”是一个函数。。

在将来创建具体程序时,例如执行处理数字的计算或创建具有某些函数的函数时,了解数据类型非常重要。

因此,这一次,我将以通俗易懂的方式解释 JavaScript 中处理的数据类型。

JavaScript 数据类型

JavaScript 中的数据类型大致可以分为两种类型:原始类型和对象类型。

原始类型具有单个不变的值,而对象类型具有多个变化的值。

任何不是原始类型的都是对象类型。

原始类型对象类型
有一个值有多个值
值不变值变化
示例:数字 10,字符串“你好”示例:数组中的 ['dog', 'cat', 'bird']

原始类型是不可变的数据类型

首先,您可能对基本体类型的值单一且不变化这一点抱有疑问。

例如,数值的“10”和“5”所具有的意思是一样的,“10+5”最终的结果是“15”。

换句话说,它是代表值本身的不可变数据类型。

let number1 = 10;
let number2 = 5;

console.log(number1 + number2); // 15
console.log(number1 === 10); // true
console.log(number1 + number2 === 15); // true

以字符串为例,“Hello”和“Hello,”和“World”合并的“Hello,World”值不同。可以说始终具有单个值。

const sayhello1 = 'Hello';
const sayhello2 = 'Hello, ' + 'World';

console.log(sayhello1); // "Hello"
console.log(sayhello2); // "Hello, World"
console.log(sayhello1 === sayhello2); // false

对象类型是可变数据类型

那么一个对象类型有多个变化的值是什么意思呢?

例如,考虑一个具有多个字符串值的数组:“['dog', 'cat', 'bird']”。

如果要将'bird' 更改为'rabbit',则数组本身将通过交换数组的内容而改变。

因此,对象类型可以被识别为可变数据类型。

let pets = ['dog', 'cat', 'bird'];
console.log(pets); // ["dog", "cat", "bird"]

pets = ['dog', 'cat', 'rabbit'];
console.log(pets); // ["dog", "cat", "rabbit"]

使用 typeof 运算符检查原始类型

有七种原始类型:

原始类型typeof特征例子
数字number整数或浮点数5、3.14
字符串string多个字符的组合‘Hello’
长整数bigint无法以数字方式处理的大整数1n
布尔值boolean判断真假true, false
undefinedundefined表示值未定义undefined
nullobject表示值不存在null
符号symbol表示独一无二的值Symbol()

您可以使用 typeof 运算符检查值属于哪个类型。

typeof 要检查类型的值

如果您实际使用 typeof 运算符来检查每个原始值适用于哪种类型,您将得到以下结果。

// 数字
console.log(typeof 5); // "number"

// 字符串
console.log(typeof 'Hello'); // "string"

// 长整数
console.log(typeof 1n); // "bigint"

// 真伪值
console.log(typeof true); // "boolean"
console.log(typeof false); // "boolean"

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

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

// 符号
console.log(typeof Symbol()); // "symbol"

详解JavaScript数据类型和typeof运算符

使用typeof运算符检查对象类型

所有非原始类型都是对象类型。

因此,许多类型都属于对象类型。

以下是代表性的对象类型。

对象类型typeof特征例子
对象object将多个值作为属性管理[1, 2, 3]
数组object将多个值作为列表进行管理{id:1, name: ‘zhangsan’}
函数function将多个程序作为一个处理进行管理{id:1, name: ‘zhangsan’}
日期object处理日期和时间new Date()

可以使用 typeof 运算符获得这种类型的结果。

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

// 数组
console.log(typeof { id:1, name: 'ciyawang' }); // "object"

// 函数
function saySomething() {
    console.log('hello');
}
console.log(typeof saySomething); // "function"

// 日期
console.log(typeof new Date()); // "object"

了解数据类型的理由

每种编程语言都有一个值类型,我们操纵各种值来进行特定的处理。

有些编程语言严格区分和表达数据类型。

与其他编程语言相比,JavaScript对数据类型更宽松。

例如,可以将数字“10”与字符串“10”视为相同的值,也可以将其区分开。

let number1 = 10;
let number2 = '10';

// 将10和'10'视为相同
console.log(number1 == number2); // true

// 区分10和'10'
console.log(number1 === number2); // false

虽然JavaScript对数据类型宽松,但在进行开发时,如果没有意识到数据类型,也会引起意想不到的错误。

所以时刻保持对数据类型的理解和意识是很重要的。

结语

这一次,我们了解了 JavaScript 数据类型和 typeof 运算符。

首先,您应该记住“原始类型”,它可以说是 JavaScript 的基础知识,其余部分是“对象类型”。

也可以利用 typeof 运算符获取每种数据类型的结果。