JavaScript有几种数据类型,分别是什么?

news/2025/3/14 21:34:45/

JavaScript中,我们可以分成两种类型:基本类型  复杂类型(引用类型)

两种类型的区别是:存储位置不同

基本类型主要为以下六种:

Number、String、Boolean、Undefined、Null、Symbol

复杂类型/引用类型统称为 Object,主要讲述下面三种:

Object、Array、Function

基本类型:

Number 类型中,存在一个特殊数值 NaN,意为“不是数值”。用于表示本来要返回数值的操作失败了(而不是抛出错误)

console.log(0/0); // NaN
console.log(-0/+0); // NaN

Undefined 类型只有一个值,就是特殊值 undefined。当使用 var或 let声明了变量但没有初始化时,就相当于给变量赋予了 undefined

let message;
console.log(message == undefined); // true

String 字符串类型可以使用双引号(")、单引号(')或反引号(`)标示

let firstName = "John";
let lastName = 'Jacob';
let lastName = `Jingleheimerschmidt`

Null类型同样只有一个值,即特殊值 null。逻辑上讲, null 值表示一个空对象指针,这也是给typeof传一个 null 会返回 "object" 的原因。undefined 值是由 null值派生而来,只要变量要保存对象,而当时又没有那个对象可保存,就可用 null来填充该变量。

let car = null;
console.log(typeof car); // "object"console.log(null == undefined); // true

Boolean(布尔值)类型有两个字面值: true 和false 。通过Boolean可以将其他类型的数据转化成布尔值。规则如下:

数据类型      				转换为 true 的值      				转换为 false 的值String        				 非空字符串          					"" Number 				非零数值(包括无穷值)						0 、 NaN Object 					 任意对象 							   null
Undefined 					N/A (不存在) 						undefined

Symbol (符号)是原始值,且符号实例是唯一、不可变的。符号的用途是确保对象属性使用唯一标识符,不会发生属性冲突的危险。

let genericSymbol = Symbol();
let otherGenericSymbol = Symbol();
console.log(genericSymbol == otherGenericSymbol); // falselet fooSymbol = Symbol('foo');
let otherFooSymbol = Symbol('foo');
console.log(fooSymbol == otherFooSymbol); // false

引用类型:

创建object常用方式为对象字面量表示法,属性名可以是字符串或数值

let person = {name: "Nicholas","age": 29,5: true
};

JavaScript数组是一组有序的数据,但跟其他语言不同的是,数组中每个槽位可以存储任意类型的数据。并且,数组也是动态大小的,会随着数据添加而自动增长

let colors = ["red", 2, {age: 20 }]
colors.push(2)

函数实际上是对象,每个函数都是 Function类型的实例,而 Function也有属性和方法,跟其他引用类型一样。函数存在三种常见的表达方式:

  • 函数声明
// 函数声明
function sum (num1, num2) {return num1 + num2;
}
  • 函数表达式
let sum = function(num1, num2) {return num1 + num2;
};
  • 箭头函数

函数声明和函数表达式两种方式

let sum = (num1, num2) => {return num1 + num2;
};

除了上述说的三种之外,还包括DateRegExpMapSet等......


http://www.ppmy.cn/news/48129.html

相关文章

C++ const关键字

参考资料: 【C const的各种用法详解】【const用法深入浅出】 - COS - 博客园 (cnblogs.com) const的基本概念: const名叫常量限定符,用来限定特定变量,以通知编译器该变量是不可修改的。习惯性的使用const,可以避免在函…

PostgreSQL环境搭建和主备构建

目录 1 Windows 上安装 PostgreSQL2 docker安装PostgreSQL2.1 检索当前镜像2.2. 拉取当前镜像2.3 创建挂载文件夹2.4 启动镜像2.5 查看日志2.7 查看进程2.8 使用连接 3 postgresql主从主备搭建3.1 安装好网络源(主1.11、从1.12)3.2 安装postgresql&#…

Python OpenCV 3.x 示例:1~5

原文:OpenCV 3.x with Python By Example 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 计算机视觉 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 当别人说你没有底线的时候,你最…

一定要会的算法复杂度分析

本文首发自「慕课网」,想了解更多IT干货内容,程序员圈内热闻,欢迎关注"慕课网"! 原作者:s09g|慕课网讲师 我们知道面对同一道问题时可能有多种解决方案。自然地,我们会将多种方法进行比较。那么…

同样是测试,朋友到了30k,我才12K,这份测试面试8股文确实牛

程序猿在世人眼里已经成为高薪、为人忠诚的代名词。 然而,小编要说的是,不是所有的程序员工资都是一样的。 世人所不知的是同为程序猿,薪资的差别还是很大的。 众所周知,目前互联网行业是众多行业中薪资待遇最好的,…

Leetcode33.搜索旋转排列数组

搜索旋转排列数组 一、题目描述&#xff1a;二、解决思路和代码1. 解决思路2. 代码 一、题目描述&#xff1a; 整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length…

【Unity VR开发】结合VRTK4.0:添加遮蔽追踪器

语录&#xff1a; 恋爱应该是双方扶持对方共同完成自己的目标&#xff0c;而不是虚幻的思想、肤浅的物质、和纸醉金迷的生活。 前言&#xff1a; 遮蔽追踪器&#xff08;Trackers.ObscuranceTracker&#xff09;是基于游戏对象存在或不可见之间切换对象的状态&#xff0c;从而遮…

Ajax超详解(新手入门指南)

文章目录 1. AJAX简介2. 前后端交互3. XHR3.1 XMLHttpRequest对象3.2 获取模拟的后端数据3.3 获取网络数据3.4 使用json-server模拟服务器3.4.1 安装node.js3.4.2 安装并使用json-server 3.5 常见的请求方式3.5.1 GET请求3.5.2 POST请求3.5.3 PUT请求3.5.4 PATCH请求3.5.5 DELE…