【Java 进阶篇】JavaScript 数据类型详解

在这里插入图片描述

JavaScript是一种弱类型脚本语言,具有动态类型。这意味着JavaScript中的变量可以容纳不同类型的数据,并且它们的类型可以在运行时更改。在本文中,我们将深入探讨JavaScript中的数据类型,包括原始数据类型和引用数据类型,以及如何使用它们创建变量和操作数据。

原始数据类型

JavaScript有6种原始数据类型,也被称为基本数据类型,它们包括:

  1. 字符串(String):用于表示文本数据,可以使用单引号或双引号括起来。

    var name = "Alice";
    var message = 'Hello, World!';
    
  2. 数字(Number):用于表示数值,包括整数和浮点数。

    var age = 30;
    var price = 19.99;
    
  3. 布尔(Boolean):用于表示逻辑值,只有两个可能的值:truefalse

    var isStudent = true;
    var hasLicense = false;
    
  4. 空(Null):表示一个空值或无值。

    var emptyValue = null;
    
  5. 未定义(Undefined):表示一个未初始化的变量。

    var undefinedValue;
    
  6. 符号(Symbol):引入于ECMAScript 6(ES6),用于创建唯一的标识符。

    var uniqueSymbol = Symbol('description');
    

检测数据类型

要检测JavaScript变量的数据类型,可以使用typeof操作符:

typeof name; // 返回 "string"
typeof age; // 返回 "number"
typeof isStudent; // 返回 "boolean"
typeof emptyValue; // 返回 "object"
typeof undefinedValue; // 返回 "undefined"
typeof uniqueSymbol; // 返回 "symbol"

需要注意的是,typeof对于null返回的是"object",这被认为是JavaScript的一个历史遗留问题。

引用数据类型

除了原始数据类型,JavaScript还有一种引用数据类型,它被称为对象(Object)。对象是一种复合数据类型,它可以包含多个属性和方法。对象是JavaScript中最重要的数据类型之一。

创建对象

可以使用对象字面量或构造函数来创建JavaScript对象。

对象字面量
var person = {firstName: "John",lastName: "Doe",age: 30
};
构造函数
function Person(firstName, lastName, age) {this.firstName = firstName;this.lastName = lastName;this.age = age;
}var person = new Person("John", "Doe", 30);

访问对象属性

可以使用点符号(.)或方括号([])来访问对象的属性。

console.log(person.firstName); // 使用点符号访问属性
console.log(person['lastName']); // 使用方括号访问属性

修改对象属性

person.age = 31; // 修改属性值
person['age'] = 32; // 也可以使用方括号来修改属性值

删除对象属性

delete person.age; // 删除属性

对象方法

对象可以包含方法,这些方法是与对象相关的函数。方法可以通过对象来调用。

var person = {firstName: "John",lastName: "Doe",fullName: function() {return this.firstName + " " + this.lastName;}
};console.log(person.fullName()); // 调用对象方法

特殊对象

JavaScript中有一些特殊的对象,包括:

  1. 数组(Array):用于存储一组值的有序列表。

    var colors = ['red', 'green', 'blue'];
    
  2. 日期(Date):用于处理日期和时间。

    var today = new Date();
    
  3. 正则表达式(RegExp):用于处理字符串的模式匹配。

    var pattern = /abc/;
    
  4. 函数(Function):JavaScript中的函数也是对象,可以赋值给变量,作为参数传递,或者作为返回值。

    function greet(name) {return "Hello, " + name + "!";
    }
    
  5. 全局对象(Global Object):在浏览器中,全局对象是window;在Node.js环境中,全局对象是global。全局对象包含了很多全局属性和函数。

    window.alert("Hello, World!"); // 在浏览器中
    global.console.log("Hello, World!"); // 在Node.js中
    
  6. Math对象:包含了各种数学操作和常数。

    var circumference = 2 * Math.PI * radius;
    
  7. JSON对象:用于解析和序列化JSON数据。

    var jsonStr = '{"name": "John", "age": 30}';
    var jsonObj = JSON.parse(jsonStr);
    

类型转换

JavaScript中有两种类型转换:隐式类型转换和显式类型转换。

隐式类型转换

隐式类型转换是由JavaScript自动执行的类型转换。它通常发生在表达式的计算中,例如:

var result = "5" * 2; // 10

在这个示例中,JavaScript将字符串转换为数字,并执行乘法运算。

显式类型转换

显式类型转换是由开发人员明确执行的类型转换。JavaScript提供了一些内置函数来执行显式类型转换,例如:

  • Number():将值转换为数字。
  • String():将值转换为字符串。
  • Boolean():将值转换为布尔值。
var num = Number("42"); // 显式转换为数字
var str = String(123); // 显式转换为字符串
var bool = Boolean(0); // 显式转换为布尔值

NaN和Infinity

JavaScript中有一些特殊的数值表示:

  • NaN(Not-a-Number):表示一个无效的数值。当执行不合法的数学操作时,结果通常为NaN

    var result = 0 / 0; // NaN
    
  • Infinity:表示正无穷大,-Infinity表示负无穷大。它们通常用于表示数值溢出。

    var maxNum = Infinity;
    var minNum = -Infinity;
    

总结

JavaScript是一种多样化的语言,具有多种数据类型,包括原始数据类型和引用数据类型。理解这些数据类型是编写JavaScript应用程序的关键。本文提供了关于JavaScript数据类型的详细信息,以帮助你更好地使用和操作数据。无论你是初学者还是有经验的开发人员,深入了解JavaScript的数据类型都是非常重要的。希望这篇文章能帮助你更好地掌握JavaScript的数据类型和类型转换。

作者信息

作者 : 繁依Fanyi
CSDN: https://techfanyi.blog.csdn.net
掘金:https://juejin.cn/user/4154386571867191

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

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

相关文章

安科瑞ARB5系列弧光保护装置,智能电弧光保护,保障用电安全

安科瑞虞佳豪壹捌柒陆壹伍玖玖零玖叁 什么是弧光 电弧是放电过程中发生的一种现象,当两点之间的电压超过其工频绝缘强度极限时就会发生。当适当的条件出现时,一个携带着电流的等离子产生,直到电源侧的保护设备断开才会消失。空气在通常条件…

【ARM CoreLink 系列 6 -- DMC-400控制器简介】

文章目录 1.1 DMC-400 简介1.1.1 DFI(DDR PHY Interface)1.1.2 DFI 接口组1.1.3 DMC-400 兼容协议1.1.4 DMC-400 特性1.1.5 DMC-400 Interface 1.1 DMC-400 简介 DMC-400是一个由ARM开发、测试和授权的动态内存控制器,同时 DMC-400也是一个符…

git 回滚到指定版本

第一步:找到指定的需要回滚的版本的版本号 项目终端输入命令git log --oneline 第二步:使用git命令回滚到指定的版本 git reset --hard 版本号 第三步:此时再推到远程仓库用git push 会报错,需要用git push -f强推上去才可以哦

Swagger-go学习笔记

目录 Swagger的作用背景Swagger介绍 Swagger的基本使用1. 使用步骤2. 添加注释3. 生成接口文档数据4. 引入gin-swagger5. 测试结果6. 使用Token Swagger-go的中文文档通用API信息API操作MIME类型参数类型数据类型 Swagger的作用 背景 在传统的前后端分离的项目中,…

vue3组件的通信方式

一、vue3组件通信方式 通信仓库地址:vue3_communication: 当前仓库为贾成豪老师使用组件通信案例 不管是vue2还是vue3,组件通信方式很重要,不管是项目还是面试都是经常用到的知识点。 比如:vue2组件通信方式 props:可以实现父子组件、子父组件、甚至兄弟组件通信 自定义事件:可…

C语言自定义类型_枚举联合(3)

目录 枚举 什么是枚举类型? 枚举的声明 枚举的定义 枚举的优点 枚举的使用 联合(共用体) 什么是联合呢? 联合类型的定义 联合的特点 联合使用 联合大小的计算 联合的应用 今天接着我们来结束自定义类型。&#x1f19…

Flink之Watermark源码解析

1. WaterMark源码分析 在Flink官网中介绍watermark和数据是异步处理的,通过分析源码得知这个说法不够准确或者说不够详细,这个异步处理要分为两种情况: watermark源头watermark下游 这两种情况的处理方式并不相同,在watermark的源头确实是异步处理的,但是在下游只是做的判断,这…

TensorFlow学习:在web前端如何使用Keras 模型

前言 在上篇文章 TensorFlow学习:使用官方模型进行图像分类、使用自己的数据对模型进行微调中我们学习了如何使用官方模型,以及使用自己的数据微调模型。 但是吧,代码一直是跑在Python里,而我本身是做前端开发的。我是很想让它在…

es elasticsearch 基础

es https://www.elastic.co/guide/en/elasticsearch/reference/6.8/getting-started.html 倒排索引: 正排–>从目录到文章内容 倒排–>内容到目录文章标题 if we dont need full text search ,we dont need to create 倒排 using text type 分词&#xff1a…

C语言-贪吃蛇 1.输入控制ncurse

一、为什么要用nurse C语言中的gets()、scanf()、getchar()等函数是在用户输入后需要按下Enter键才能执行代码,而贪吃蛇要求按下按键后立即对蛇的方向进行操作,所以根据贪吃蛇功能的需求引入ncurse,让用户输入后就能让蛇进行对应的行动。 二、…

10.本项目的简单介绍及所用工具

本项目的简单介绍及所用工具 本项目的层次架构适合初学者或者有一些基础的同学,项目整体简单明了,有着非常严谨的逻辑思维,并且在前面文章中也讲了一些项目中所需要的软件安装配置以及一些前置的在本项目中所需要的java基础知识。 项目名称 …

8路高速光栅尺磁栅尺编码器4倍频计数转Modbus TCP网络模块 YL99-RJ45

特点: ● 光栅尺磁栅尺解码转换成标准Modbus TCP协议 ● 高速光栅尺磁栅尺4倍频计数,频率可达5MHz ● 模块可以输出5V的电源给光栅尺或传感器供电 ● 支持8个光栅尺同时计数,可识别正反转 ● 可以设置作为16路独立DI高速计数器 ● 可网…

智慧办公数据可视化大屏设计(数据可视化)、大数据、数据大屏、办公数据大屏、办公数据

本次分享的作品是用软件Axure8.0(兼容9和10)制作的智慧办公数据进行的可视化大屏设计,主要是针对办公的综合数据、工位数据、会议室数据、访客数据、能耗数据以及设备智控数据进行可视化数据分析。 1、综合分析:对办公室的整体数据、空气质量…

JVM第一讲:JVM相关知识体系详解+面试(P6熟练 P7精通)

JVM相关知识体系详解面试(P6熟练 P7精通) 面试时常常被面试官问到JVM相关的问题。本系列将给大家构建JVM核心知识点全局知识体系,本文是JVM第一讲,JVM相关知识体系详解和相关面试题梳理。 文章目录 JVM相关知识体系详解面试(P6熟练 P7精通)1、JVM学习建议…

设计模式 - 行为型考点模式:责任链模式(概述 | 案例实现 | 优缺点 | 使用场景)

目录 一、行为型模式 1.1、责任链模式 1.1.1、概述 1.1.2、案例实现 1.1.3、优缺点 1.1.4、使用场景 一、行为型模式 1.1、责任链模式 1.1.1、概述 为了避免请求发送者和多个请求处理者耦合在一起,就将所有请求处理者通过前一个对象记住下一个对象的引用的方…

联邦学习综述二

联邦学习漫画 联邦学习漫画链接: https://federated.withgoogle.com/ Federated Analytics: Collaborative Data Science without Data Collection 博客链接: https://blog.research.google/2020/05/federated-analytics-collaborative-data.html 本篇博客介绍了联邦分析&a…

Filebeat、metricbeat、kafka

kibana机子上安装filebeat(因为有nginx) 上传filebrat包 在es概览查看 上传metricbeat 排错 tailf !$ Kibana-Vlsualize查看 kafka(卡夫卡) kafka是一个分布式的消息发布—订阅系统(kafka其实是消息队列)消息队列中间件 Kafka的…

Pycharm远程debug代码,一直进入remote_sources

最近debug发现代码一直跳转到 AppData\Local\JetBrains\PyCharm2022.2\remote_sources\xxx这样的目录下,查找百度也没有找到解决的方法。 最后发现,在Run的配置这,有一个Path mappings是空的,把这里的映射填成本地项目和远程项目…

HDR-ISP_unpack_depwl_01_20231002

https://github.com/JokerEyeAdas/HDR-ISP/tree/main 1.unpack:解析raw图 (1)unpack:2个字节1个像素 (2)mipi10:5个字节4个像素 [p1 9:2][p2 9:2][p3 9:2][p4 9:2][(p1 1:0)(p2 1:0)(p3 1:0)(p4 1:0)] (3)mipi12:3个字节2个像…

vscode安装svn扩展(windows)

一、安装 1.1 环境说明 操作系统 windows 10 1.2 安装过程 1. 安装svn 双击安装程序 点击next 继续next 继续next 点击Install 在弹出框中点击 是 开始安装进度,一会将安装成功 安装结束 右键菜单栏中已经有svn选项,并且能正常拉取以…