JS知识点汇总(七)--数据类型

news2024/7/6 19:03:34

1. JavaScript中的简单数据类型有哪些?

1、概述

JS 中有六种简单数据类型:undefined、null、boolean、string、number、symbol

ES10中的新特性 BigInt (任意精度整数),目前还处于stage-4阶段,不出意外即将成为js的第七种基本数据类型和第二个数字数据类型。
虽然变量的数据类型是不确定的,但是各种运算符对数据类型是有要求的,如果运算子的类型与预期不符合,就会触发类型转换机制

常见的类型转换有:

  • 强制转换(显示转换)
  • 自动转换(隐式转换)

2、显示转换

显示转换,常见的方法有:

  • Number()
  • parseInt()
  • String()
  • Boolean()
  • Number()
    将任意类型的值转化为数值

类型转换规则:

原始值转换结果
undefinedNaN
Null0
true1
false0
String根据语法和转换规则来转换
Symbolthrow a typeError exception
Object先调用toPrimitive,在调用toNumber
Number(123) // 123

// 字符串:如果可以被解析为数值,则转换为相应的数值
Number('123') // 123

// 字符串:如果不可以被解析为数值,返回 NaN
Number('123abc') // NaN

// 空字符串转为0
Number('') // 0

// 布尔值:true 转成 1,false 转成 0
Number(true) // 1
Number(false) // 0

// undefined:转成 NaN
Number(undefined) // NaN

// null:转成0
Number(null) // 0

// 对象:通常转换成NaN(除了只包含单个数值的数组)
Number({x: 1}) // NaN
Number([1, 2, 3]) // NaN
Number([6]) // 6

Number转换的时候是很严格的,只要有一个字符无法转成数值,整个字符串就会被转为NaN

parseInt()
parseInt相比Number,就没那么严格了,parseInt函数逐个解析字符,遇到不能转换的字符就停下来
parseInt('123a3') //123

String()
可以将任意类型的值转化成字符串
给出转换规则图:

原始值转换结果
undefined’undefined’
Boolean‘true’ or ‘false’
Number对应的字符串类型
StringString
Symbolthrow a typeError exception
Object先调用toPrimitive,在调用toNumber
// 数值:转为相应的字符串
String(1) // "1"

//字符串:转换后还是原来的值
String("x") // "x"

//布尔值:true转为字符串"true",false转为字符串"false"
String(true) // "true"

//undefined:转为字符串"undefined"
String(undefined) // "undefined"

//null:转为字符串"null"
String(null) // "null"

//对象
String({x: 1}) // "[object Object]"
String([1, 2, 3]) // "1,2,3"

Boolean()
可以将任意类型的值转为布尔值,转换规则如下:
在这里插入图片描述

Boolean(undefined) // false
Boolean(null) // false
Boolean(0) // false
Boolean(NaN) // false
Boolean('') // false
Boolean({}) // true
Boolean([]) // true
Boolean(new Boolean(false)) // true

3、隐式转换

可以归纳为两种情况发生隐式转换的场景:

比较运算(==、!=、>、<)、if、while需要布尔值地方
算术运算(+、-、*、/、%)
自动转换为布尔值
在需要布尔值的地方,就会将非布尔值的参数自动转为布尔值,系统内部会调用Boolean函数
如:

  • undefined
  • null
  • false
  • +0
  • -0
  • NaN
  • “”
    除了上面几种会被转化成false,其他都换被转化成true

自动转换成字符串
遇到预期为字符串的地方,就会将非字符串的值自动转为字符串
具体规则是:先将复合类型的值转为原始类型的值,再将原始类型的值转为字符串

常发生在+运算中,一旦存在字符串,则会进行字符串拼接操作

'6' + 1 // '61'
'6' + true // "6true"
'6' + false // "6false"
'6' + null // "6null"
'6' + [] // "6"
'6' + undefined // "6undefined"
'6' + function (){} // "6function (){}"
'6' + {} // "6[object Object]"

自动转换成数值
除了+有可能把运算子转为字符串,其他运算符都会把运算子自动转成数值

true - 1  // 0
false - 1 // -1
false / '6' // 0
'6' - '2' // 6
'6' * '2' // 12
'1' - 1   // 0
'6' * []    // 0
'abc' - 1   // NaN
null + 1 // 1
undefined + 1 // NaN

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

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

相关文章

036:mapboxGL点击某位置,转换坐标为地址,弹出地理信息

第036个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中点击某位置,转换坐标位地址,弹出地理信息. 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共106行)相关API参考:专栏目标示例效果 配置方式 1)…

完整的复数类

复数类应该具有的操作 运算&#xff1a;&#xff0c;-&#xff0c;*&#xff0c;/ 比较&#xff1a;&#xff0c;! 赋值&#xff1a; 求模&#xff1a;modulus 利用操作符重载 统一复数与实数的运算方式 统一复数与实数的比较方式 注意事项 C 规定赋值操作符 () 只能重载…

vue项目运行不起来,可能是版本等不兼容问题

给pakeage.json 运行脚本前加上&#xff1a;set NODE_OPTIONS--openssl-legacy-provider && 即可。

echarts 实现3D饼图

2023.6.30今天我学习了如何使用echarts渲染一个3d的饼图&#xff0c;效果如下&#xff1a; 相关代码如下&#xff1a; <template><div ref"pie3d"/> </template> <script>mounted() {this.myChart this.$echarts.init(this.$refs.pie3d);…

【AUTOSAR】BMS开发实际项目讲解(二十五)----电池管理系统安全状态过渡

安全状态过渡 关联的系统需求 TSR-BMS-S201、TSR-BMS-S202、TSR-BMS-S203、TSR-BMS-S204、TSR-BMS-S601、TSR-BMS-S602、TSR-BMS-S603、TSR-BMS-S604、TSR-BMS-S605、TSR-BMS-S606、TSR-BMS-S607、TSR-BMS-S608、TSR-BMS-S609、TSR-BMS-S610、TSR-BMS-S611、TSR-BMS-S612; TSC…

【Linux系统编程】—进程学习笔记(fork进程创建、退出、僵死进程与孤儿进程、如何避免僵死进程)

目录 一、进程关键概念 二、进程创建实战 1、fork函数 2、fork创建一个子进程的一般目的&#xff1a; 3、fork函数实例&#xff1a; 4、fork的写时拷贝技术&#xff08;COW&#xff09; 三、进程退出 1、正常退出 2、异常退出 3、总结 四、僵死进程与孤儿进程 1、什…

融合学习:跨文化交流的学习平台

在全球化的时代&#xff0c;跨文化交流已经成为了一个不可避免的现象。在这种情况下&#xff0c;融合学习平台成为了一个非常重要的工具&#xff0c;可以帮助人们更好地了解和学习不同文化之间的差异和相似之处。本文将探讨融合学习平台的重要性&#xff0c;以及如何选择最佳的…

构建交互式数据框架:使用Gradio的Dataframe模块

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

查找算法-线性搜索

线性搜索 简介 线性搜索是一种简单的搜索算法&#xff0c;也被称为顺序搜索。它从数据集的起始位置开始&#xff0c;逐个比较每个元素&#xff0c;直到找到目标元素或遍历完整个数据集为止。如果目标元素存在于数据集中&#xff0c;线性搜索会返回该元素的位置或索引&#xf…

照片如何转存到手机笔记中?具体方法教程在这里

传统的笔记形式一般是以文字的形式记录&#xff0c;通常是在一个笔记本中写下自己的所感所想、工作、生活等方面的内容。有时也有人会选择贴上照片&#xff0c;成为个人回忆的重要资料。 而随着手机笔记的出现&#xff0c;很多人选择使用它来记录&#xff0c;因为我们可以随时…

小米 红米 Redmi note11 4G 5G 手机解锁BL 秒BL解锁 教程 跳过168小时 selenes evergo线刷机包下载

红米&#xff08;Redmi&#xff09;Note 11 5G 手机BL解锁 红米note11 4G/5G 秒解锁BL锁 方法 教程 跳过168小时 新版本 selenes evergo 红米Note11系列版本非常多&#xff0c;从4G开始一直到后面出现的11R&#xff0c;我们常见的机型有红米 Note11/11Pro/11Pro/11SE/11R等等&…

管理类联考——数学——知识篇——公式——最难记

立方和与立方差公式 a 3 b 3 ( a b ) ( a 2 ∓ a b b 2 ) a^3b^3(ab)(a^2∓abb^2) a3b3(ab)(a2∓abb2) 一元二次方程求根公式 x − b b 2 − 4 a c 2 a &#xff0c; b 2 − 4 a c ≥ 0 x\frac{-b\sqrt{b^2-4ac}}{2a}&#xff0c;\sqrt{b^2-4ac}≥0 x2a−bb2−4ac ​​&…

蓝牙模块(HC-05/HC-06)详解

这里写目录标题 0. 蓝牙概述蓝牙技术的特点 1. 常见的蓝牙模块2. HC-05/HC-062.1 概念2.2 区别 3. STM32使用HC-05通信3.1 方法3.2 示例代码 0. 蓝牙概述 蓝牙&#xff08;Bluetooth&#xff09;是一种用于无线通信的技术标准&#xff0c;允许设备在短距离内进行数据交换和通信…

初学mybatis(七)缓存

学习回顾&#xff1a;初学mybatis&#xff08;六&#xff09; 一、简介 1、什么是缓存 [ Cache ]&#xff1f; 存在内存中的临时数据。将用户经常查询的数据放在缓存&#xff08;内存&#xff09;中&#xff0c;用户去查询数据就不用从磁盘上(关系型数据库数据文件)查询&#x…

6应用层-6.2【实验】【计算机网络】

6应用层-6.2【实验】【计算机网络】 前言推荐6应用层知识一、DNS常用记录类型&#xff1a;二、nslookup命令的用法 6.1 Web服务与FTP服务配置6.2 DNS域名系统配置实验目的实验内容及实验环境实验原理实验过程1.搭建如图所示的网络拓扑2.测试网络连通性3.在服务器上启用DNS服务&…

腾讯云部署tomcat问题--使用localhost访问没问题但是使用公网访问就有问题

1、使用localhost访问没问题。 2、使用公网访问就有问题 3、解决方案 3.1设置了一个规则&#xff0c; 3.2查看页面&#xff0c;访问OK

如何在 Shadow 插件化框架中动态加载和调用插件中的方法

Shadow是一种Android插件化框架&#xff0c;它允许将应用功能模块以插件的方式集成到宿主应用中。插件化是指将应用的不同模块打包成独立的插件&#xff0c;可以在运行时动态地加载和卸载这些插件&#xff0c;从而实现动态扩展和灵活组合功能。 Shadow插件化框架采用了类加载器…

Jenkins全栈体系(一)

Jenkins Jenkins&#xff0c;原名 Hudson&#xff0c;2011年改为现在的名字。它是一个开源的实现持续集成的软件工具。 第一章 GitLab安装使用 官方网站&#xff1a;https://about.gitlab.com/ 安装所需最小配置 内存至少4G https://docs.gitlab.cn/jh/install/requireme…

上海声通团队在WeNet中开源Branchformer

上海声通信息科技股份有限公司作为交互式人工智能市场的领导者&#xff0c;具有极强的技术优势和突出的产品特点。公司基于自研的融合通信及人工智能两项核心技术&#xff0c;打造了丰富的、高度标准化的产品模块&#xff0c;为客户提供高效、稳定的产品体验。公司主要的业务场…

Arduino Proteus仿真空气净化器温湿度PM2.5空气质量MQ135-0049

Arduino Proteus仿真空气净化器温湿度PM2.5空气质量MQ135-0049 Proteus仿真小实验&#xff1a; Arduino Proteus仿真空气净化器温湿度PM2.5空气质量MQ135-0049 功能&#xff1a; 硬件组成&#xff1a;ARDUINO -UNO-R3开发板、 LCD1602 、DHT11温湿度传感器、电位器模拟PM2.…