JS数据类型解读

在JavaScript(JS)中,数据类型可以分为两大类:原始类型(Primitive Types)和引用类型(Reference Types)。以下是对每种数据类型的详细讲解:

一、原始类型(Primitive Types)

原始类型是不可变的数据类型,指的是其值本身不可改变。JavaScript 中有 7 种原始类型:

  1. Undefined

    • 只有一个值,即 undefined
    • 当一个变量被声明但未赋值时,其值就是 undefined
    let a;
    console.log(a); // undefined
    
  2. Null

    • 只有一个值,即 null
    • 通常表示一个空对象引用。
    let b = null;
    console.log(b); // null
    
  3. Boolean

    • 有两个值:truefalse
    • 用于逻辑判断。
    let isTrue = true;
    let isFalse = false;
    
  4. Number

    • 表示数字(整数和浮点数)。
    • JavaScript 中所有数字都是 64 位的浮点数。
    let num1 = 42;
    let num2 = 3.14;
    let num3 = NaN; // 表示“不是一个数字”(Not-a-Number)
    
  5. BigInt

    • 用于表示任意精度的整数。
    • 通过在整数末尾加 n 来表示。
    let bigInt = 1234567890123456789012345678901234567890n;
    
  6. String

    • 表示文本数据。
    • 可以用单引号、双引号或反引号(模板字面量)来定义。
    let str1 = "Hello";
    let str2 = 'World';
    let str3 = `Hello, ${str2}!`;
    
  7. Symbol

    • 表示唯一且不可变的值,通常用于对象的属性。
    let sym = Symbol('description');
    

二、引用类型(Reference Types)

引用类型是可以变的数据类型,即其值是可变的。常见的引用类型有:

  1. Object

    • 用于存储键值对的集合或复杂的实体。
    let obj = {name: "John",age: 30
    };
    
  2. Array

    • 一种特殊的对象,用于存储有序集合。
    let arr = [1, 2, 3, 4, 5];
    
  3. Function

    • 一种可调用的对象。
    function greet(name) {return `Hello, ${name}!`;
    }
    
  4. Date

    • 用于处理日期和时间。
    let now = new Date();
    
  5. RegExp

    • 正则表达式对象,用于模式匹配。
    let regex = /ab+c/;
    
  6. Map

    • 用于存储键值对,其中键可以是任意类型。
    let map = new Map();
    map.set('key', 'value');
    
  7. Set

    • 用于存储唯一值的集合。
    let set = new Set([1, 2, 3]);
    

详细示例

以下是一些使用常见数据类型的示例代码:

// Undefined
let x;
console.log(x); // undefined// Null
let y = null;
console.log(y); // null// Boolean
let isAvailable = true;
console.log(isAvailable); // true// Number
let count = 42;
let price = 19.99;
console.log(count, price); // 42 19.99// BigInt
let bigNumber = 123456789012345678901234567890n;
console.log(bigNumber); // 123456789012345678901234567890n// String
let message = "Hello, world!";
console.log(message); // Hello, world!// Symbol
let id = Symbol('id');
console.log(id); // Symbol(id)// Object
let person = {name: "Alice",age: 25
};
console.log(person); // {name: "Alice", age: 25}// Array
let numbers = [1, 2, 3, 4, 5];
console.log(numbers); // [1, 2, 3, 4, 5]// Function
function sum(a, b) {return a + b;
}
console.log(sum(3, 4)); // 7// Date
let now = new Date();
console.log(now); // 正则表达式
let pattern = /hello/i;
console.log(pattern.test("Hello, world!")); // true// Map
let map = new Map();
map.set('name', 'John');
map.set('age', 30);
console.log(map.get('name')); // John// Set
let set = new Set();
set.add(1);
set.add(2);
set.add(3);
console.log(set.has(2)); // true

通过上述示例,可以看到如何在JavaScript中定义和使用各种数据类型。原始类型的值是不可变的,而引用类型的值是可变的,理解这一点对于掌握JavaScript的变量和内存管理非常重要。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/32107.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于vue3 + ant-design 使用阿里图标库iconfont.cn

对于使用 iconfont.cn 的用户&#xff0c;通过设置 createFromIconfontCN 方法参数对象中的 scriptUrl 字段&#xff0c; 即可轻松地使用已有项目中的图标。 组件封装 IconFont <template><IconFont :type"iconType" /> </template><script se…

Web应用和Tomcat的集成鉴权1-BasicAuthentication

作者:私语茶馆 1.Web应用与Tomcat的集成式鉴权 Web应用部署在Tomcat时,一般有三层鉴权: (1)操作系统鉴权 (2)Tomcat容器层鉴权 (3)应用层鉴权 操作系统层鉴权包括但不限于:Tomcat可以和Windows的域鉴权集成,这个适合企业级的统一管理。也可以在Tomcat和应用层独立…

[jetson][python]jetson上使用的onnxruntime-gpu所有whl文件下载地址汇总

适用JetPack 4.4 / 4.4.1 / 4.5 / 4.5.1 / 4.6 / 4.6.1平台系统自带python3.6版本&#xff0c;注意需要刷机时候把cuda刷进去&#xff0c;不要随便升级系统自带python3版本 序号版本名称下载地址1onnxruntime-gpu-1.4.0-cp36-cp36m-linux-aarch64.whl点我下载2onnxruntime-gpu…

怎样利用 Clojure 的宏来创建自定义的控制结构,并且如何避免常见的错误?

在 Clojure 中&#xff0c;宏是一种宏展开的机制&#xff0c;它可以用于创建自定义的控制结构。通过使用宏&#xff0c;你可以在编写代码时引入新的语法&#xff0c;从而使代码更具可读性和表达力。 要创建一个宏&#xff0c;你需要使用defmacro宏&#xff0c;并将宏名称与一个…

湖南(市场调研)源点咨询 新产品上市前市场机会调研与研究分析

湖南源点调研认为&#xff1a;无论是创业公司&#xff0c;还是在公司内部探索新的项目或者新的产品线等&#xff0c;首先都要做“市场机会分析与调研“&#xff0c;要真正思考并解答以下疑问&#xff1a; 我们的目标客户群体是谁&#xff0c;他们如何决策&#xff1f; 我们所…

windows下mysql修改 my.ini的datadir后 `Access denied`

1. 背景 window安装mysql数据库时&#xff0c;不能指定数据文件存放位置&#xff08;默认安装路径 "C:/ProgramData"&#xff09;。 只能通过修改mysql.ini来更改数据文件存放目录。 2. 问题&#xff1a; 修改mysql.ini后&#xff0c;mysql 出现 "Access den…

Python爬虫学习 | Scrapy框架详解

一.Scrapy框架简介 何为框架&#xff0c;就相当于一个封装了很多功能的结构体&#xff0c;它帮我们把主要的结构给搭建好了&#xff0c;我们只需往骨架里添加内容就行。scrapy框架是一个为了爬取网站数据&#xff0c;提取数据的框架&#xff0c;我们熟知爬虫总共有四大部分&am…

Promise的异步调用

Promise调用两个接口&#xff0c;第二个接口的入参为第一个接口的返回值 Promise的异步调用 应用场景实例 应用场景 Promise调用两个接口&#xff0c;第二个接口的入参为第一个接口的返回值 实例 1.两个接口的调用&#xff0c;正常的写法 // 登录接口 function login(user…

【Java】已解决java.lang.NoSuchMethodException异常

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决java.lang.NoSuchMethodException异常 在Java编程中&#xff0c;java.lang.NoSuchMethodException是一个常见的运行时异常&#xff0c;它通常表示尝试通过反射调用一个不存在…

耳夹式佩戴的舒适体验,拥有AI功能的生活助手,塞那Z50耳夹耳机上手

在数码产品层出不穷的今天&#xff0c;一款能够脱颖而出的耳机&#xff0c;不仅要有出色的音质&#xff0c;更要有人性化的设计和独特的功能。最近我就发现了这么一款很有趣的耳机&#xff0c;它是来自sanag塞那Z50耳夹耳机&#xff0c;这款耳机有着新颖的佩戴方式和动听的音质…

「动态规划」如何求子数组中等差数列的个数?

413. 等差数列划分https://leetcode.cn/problems/arithmetic-slices/description/ 如果一个数列至少有三个元素&#xff0c;并且任意两个相邻元素之差相同&#xff0c;则称该数列为等差数列。例如&#xff0c;[1,3,5,7,9]、[7,7,7,7]和[3,-1,-5,-9]都是等差数列。给你一个整数…

win10环境配置ollama-ui运行llama3模型

先说我的笔记本电脑配置intel-i7-11390h,4核8处理器&#xff0c;内存16G。显卡NVIDA GeFroce MX450&#xff0c;2G显存&#xff0c;这是一台5000元左右的电脑。 我用它跑roop、sd1.5、ffusion2、ChatTTs还有pythonpytorch的自定义模型&#xff0c;现在用来跑llama3。当然&…

算法设计与分析:网络流求解棒球赛淘汰问题C++

目录 一、实验目的 二、问题描述 三、实验要求 四、算法思想 1、明显的:win[i]+remain[i][j]<> 2、不明显的:最大流 3、操作 3.1 先读入相关信息(邻接矩阵**k),进行一遍“明显的”判断。 3.2 对剩下的“不明显的”的每个球队构建流网络(邻接表vector< ve…

Redis-数据类型-Bit的基本操作-getbit-setbit-Bitmap

文章目录 0、Bitmaps&#xff08;位图&#xff09;1、查看redis是否启动2、通过客户端连接redis3、切换到db7数据库4、设置&#xff08;或覆盖&#xff09;一个键&#xff08;key&#xff09;的值&#xff08;value&#xff09;5、获取存储在给定键&#xff08;key&#xff09;…

32.基于分隔符解决黏包和半包

LineBasedFrameDecoder 基于换行/n (linux)或回车换行/r/n(windows)进行分割。 使用LIneBasedFrameDecoder构造方法,需要设定一个最大长度。 如果超过了最大长度,还是没有找到换行符,就这位这个数据段太长了,抛出ToolLongFrameException DelimiterBasedFrameDecoder …

YOLOv8白皮书-第Y7周:训练自己的数据集

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 一、环境 语言&#xff1a;Python3、Pytorch开发环境电脑系统&#xff1a;Windows 10语言环境&#xff1a;Python 3.9.2编译器&#xff1a;VS Code显卡&#…

上交商汤联合提出一种虚拟试穿的创新方法,利用自监督视觉变换器 (ViT) 和扩散模型

上交&商汤联合提出一种虚拟试穿的创新方法&#xff0c;利用自监督视觉变换器 (ViT) 和扩散模型&#xff0c;强调细节增强&#xff0c;通过将 ViT 生成的局部服装图像嵌入与其全局对应物进行对比。虚拟试穿体验中细节的真实感和精确度有了显着提高&#xff0c;大大超越了现有…

Honeyview图片查看:从未如此流畅

名人说&#xff1a;一点浩然气&#xff0c;千里快哉风。 ——苏轼 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 一、软件介绍1、Honeyview2、核心特点 二、下载安装1、下载2、安装 三、使用方法1、图片打开2、自…

FP7195做大功率钓鱼灯应用方案,0.1%深度无极无频闪调光调色应用,调光曲线顺滑无突兀

文章目录 文章目录 方案背景 一、夜钓灯电路框架 二、FP7195芯片介绍 芯片参数 总结 方案背景 目前夜钓正在逐渐变得时尚起来&#xff0c;随着夜钓群体的年轻化&#xff0c;人们对于夜钓灯的审美要求也越来越高。夜钓灯作为夜间钓鱼的重点装备&#xff0c;不仅仅需要高质量的光…

RIP路由协议汇总、版本兼容、定时器、协议优先级配置(华为)

#交换设备 RIP路由协议汇总 一、原理概述 当网络中路由器的路由条目非常多时&#xff0c;可以通过路由汇总&#xff08;又称路由汇聚或路由聚合&#xff09;来减少路由条目数&#xff0c;加快路由收敛时间和增强网络稳定性。路由汇总的原理是&#xff0c;同一个自然网段内的…