JS数据类型类型转换

news2024/11/18 21:25:31
基本数据类型

JS中的数据类型由原始值和对象共同组成,原始值一共有七种原始值:

  1. 数值(Number)
  2. 大整数(BigInt)
  3. 字符串(String)
  4. 布尔值(Boolean)
  5. 空值(Null)
  6. 未定义(Undefined)
  7. 符号(Symbol)
数值和大整数

数值(Number):在js中所有的整数和浮点数都是number类型

let a = 3
let b = 3.1415926

在js中的数值不是无限大的,当数值超过一定范围后会显示近似值,如果再大一点,会显示科学计数法,如果数值再大超过可显示范围,会显示为Infinity,Infinity是一个特殊数值表示无穷

// js小数计算一定的精度限制,在大多数情况下,精度是足够的,对于某些特定的小数运算,可能会出现不精确的结果
a = 0.1 + 0.3 //  0.30000000000000004
a = 1 - "2" // NaN (Not a Number) ,NaN也是一个特殊的数值,表示非法的数值,数值和字符串做运算

大整数(BigInt):大整数用来表示一些比较大的整数,使用n结尾,可以表示的范围是无限大,取决于内存大小,小数无法使用大整数

// 数字后以n结尾,大整数不能和整数直接进行运算
a = 9999999999999999999n
字符串string

使用单引号或者双引号表示字符串

let a = "hello"
let b = 'world'

转义

字符串转义使用\反斜杠

a = "这是一个\"字符串\""

字符串不能直换行,如果换行需要+一个\

a = "这是一串\
字符串"

模版字符串

模板字符串使用反单引号表示``,模板字符串可以直接换行,字符串的换行、空格等效果会保留

a = `这是一串
字符
	串`

模板字符串可以嵌入变量,使用${变量名}语法

let a = "xiaoli"

let str = `name is ${a}` // name is xiaoli
布尔值boolean
let a = true
let b = false
空值Null

空值只有一个值null,用来表示空对象,typeof类型是object

let a = null
未定义

作用和空值类似,同样只有一个值undefine

let a  // 变量a未赋值,就是undefined
符号symbol

symbol用于创建一个符号,表示一个唯一标识

let a = Symbol()
原始值不可修改

原始值都是不可变的类型,值一旦创建就无法修改

let a = 100
a = 200 // 检查内存如果没有200的值,会创建一个200的值,然后a指向200的内存地址,并不会修改原先的100

image-20240924191019441

类型检查

js使用typeof检查的类型

typeof 检查的是变量存储的值的类型,变量是没有类型的

let a = 100
    
    console.log(typeof a) // number
类型转换
转换为字符串

toString()

let a = 100
a.toString() // 作用是新创建一个100的字符串,并不是数值100变为字符串100
console.log(typeof a) // number
a = a.toString() // 创建一个字符串 赋值给a a变为string
console.log(typeof a) // string

null、undefined没有toString方法,无法转换字符串,会报错,其他可以通过该方法转换字符串

String()

let a = 100
string(a)  // a 是 number
a = String(a) // a是string,与toString原理一样

使用String(parm) 方法,null、undefined会转换成字符串null、undefined

转换为数值

Number()

let n = "100"
Number(n) // string
n = Number(n) // number

如果转换源是一个合法的数字,会正常转换,如果不合法,则转换成NaN

如果是空字符串或者只包含空格的字符串,则会转换成0

parseInt() / parseFloat

// 只支持字符串类型,不支持其他类型,Number支持其他类型
    
    a = parseInt(a) // 将字符串转换为整数
let a = "123pppp"
a = parseInt(a) // a = 123,解析时会从左往右解析,获取合法数字,遇到非数字时终止,如果字符串是字母开头数字在后,则无法解析到数字

parserInt与Number的区别:Number只能解析合法的数据以及字符串以外的类型,parse只能解析字符串,但是可以解析不合法的数据

如果传入的参数不是字符串,则会先将参数转换为字符串,再进行解析,无法解析小数位之后的数字,如果123.456,会解析成数字123

a = parseFloat(a) // 原理逻辑与parseInt一致
转换为布尔

数字

let a = 1
a = Boolean(a) // true

let b = 0

b = Boolean(b) // false

在数字中,除了0和NaA是false,其余都是true

a = true // 1
a = false // 0

a = Infinity //true
a = -1 // true
a = 100 //true
a = 0 // flase
a = NaN // false

字符串

空字符串是false,其余都是true

let a = "" // false

let b = "    " //true

其余null和undefined都会转换为false

对象通常都会转换为true

转换为null和undefined
a = null
a = undefined

image

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

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

相关文章

【vue-router】用meta.keepAlive做缓存

网上大家都说按下面的写法 <keep-alive><router-view v-if"route.meta.keepAlive"></router-view> </keep-alive> <router-view v-if"!route.meta.keepAlive"></router-view>但是会报错 解决方法也没找到 最后换一…

23、Presidential

难度 中 目标 root权限 2个flag 基于virtualbox启动 题目提示枚举是你的朋友 kali 192.168.86.102 靶机 192.168.86.107 信息收集 端口扫描 tcp开启的端口就两个&#xff0c;稳妥起见扫了一些常见的端口看是否有UDP协议开放的端口。同时nmap在扫描80端口提示可能存在的tra…

OCR识别系统 YOLOv8 +Paddle 方案落地

YOLOv8 PaddleOCR 技术方案落地 Yolov8相关文档Step 1 证件模型的训练Step 2 Yolov8进行图片推理Step 3 PaddleOCR进行识别Step 4 整合Yolov8 PaddleOCR 进行OCR Yolov8相关文档 《yolov8 官方网站》 《Yolov8 保姆级别安装》 Ultralytics YOLOv8 是一款尖端的、最先进的 (S…

NASA数据集:ATLAS/ICESat-2 L3B 南极和北极网格陆地冰高,第 3 版

目录 简介 摘要 代码 引用 网址推荐 0代码在线构建地图应用 机器学习 ATLAS/ICESat-2 L3B Gridded Antarctic and Arctic Land Ice Height V003 简介 ATLAS/ICESat-2 L3B 南极和北极网格陆地冰高&#xff0c;第 3 版 ATL14 和 ATL15 将 ATLAS/ICESat-2 L3B 年度陆地冰…

5 分钟快速入门 Github Action

Github Action 是一种自动化构建工具。 ‍ 介绍 什么是 GitHub Action&#xff1f;来看看阮一峰大佬的介绍&#xff1a; GitHub Actions 是 GitHub 的持续集成服务&#xff0c;于 2018 年 10 月推出。 大家知道&#xff0c;持续集成由很多操作组成&#xff0c;比如抓取代码、…

深度学习(入门)03:监督学习

1、监督学习简介 监督学习&#xff08;Supervised Learning&#xff09;是一种重要的机器学习方法&#xff0c;它的目标是通过“已知输入特征”来预测对应的标签。在监督学习中&#xff0c;每一个“特征-标签”对被称为样本&#xff08;example&#xff09;&#xff0c;这些样…

视觉分析在垃圾检测中的应用

随着城市化进程的加快&#xff0c;垃圾管理成为现代城市面临的重大挑战。有效的垃圾识别和分类不仅能提升环境保护的效率&#xff0c;还能减少资源浪费。基于视觉分析的垃圾识别算法应运而生&#xff0c;为解决这一问题提供了技术支持。 垃圾识别算法的技术实现主要依赖于深度学…

FreeRTOS-队列

FreeRTOS-消息队列 一、队列简介二、队列相关函数2.1 队列结构体2.2 队列相关API函数 三、队列操作实验 一、队列简介 队列是任务到任务、任务到中断、中断到任务数据交流的一种机制(消息传递)使用队列的情况下如图&#xff0c;在写、读队列时&#xff0c;会进入临界区&#x…

前端使用vue点击上传文件,传送给后端,后端进行文件接收

一、效果图 前端页面&#xff1a; 在java这边后端的target文件就可以接收到前端发送的文件&#xff0c;文件可以打开 接下来看具体代码是怎么实现的&#xff01; 二、代码部分 Vue代码 <template> <el-upload ref"upload" class"upload-demo&q…

黑马头条day5- 延迟任务精准发布文章

这个过程主要是流程负责 但是我没有仔细的过所有的流程 需要多刷几遍 今天只是照着md文档执行了一下 运行起来没差错 主要实现文章定时发布 通过schedule模块作为延迟队列的任务 通过redis实现的延迟任务 具体 实现还要在多走几遍流程 逻辑一点不清楚 没看网课 这节要多看几遍…

【最大公约数】

题目 思路 g c d ( x , y ) p x , y ∈ [ 1 , N ] gcd(x, y) p\;\;x,y\in[1,N] gcd(x,y)px,y∈[1,N] 转换为 g c d ( x p , y p ) 1 x p , y p ∈ [ 1 , N p ] gcd(\frac{x}{p}, \frac{y}{p}) 1\;\;\frac{x}{p},\frac{y}{p}\in[1,\frac{N}{p}] gcd(px​,py​)1px​,py​∈…

云栖实录 | 开源大数据全面升级:Native 核心引擎、Serverless 化、湖仓架构引领云上大数据发展

本文根据2024云栖大会实录整理而成&#xff0c;演讲信息如下&#xff1a; 演讲人&#xff1a; 王 峰 | 阿里云智能集团研究员、开源大数据平台负责人 李 钰&#xff5c;阿里云智能集团资深技术专家 范 振&#xff5c;阿里云智能集团高级技术专家 李劲松&#xff5c;阿里云…

Vulnhub靶机:DerpNStink: 1

0x01 项目地址 DerpNStink: 1 0x02 靶机描述 Your goal is to remotely attack the VM and find all 4 flags eventually leading you to full root access. Dont forget to #tryharder 您的目标是远程攻击虚拟机并找到所有 4 个 flag &#xff0c;最终让您获得完全 root 访…

Updates were rejected because the tip of your current branch is behind 的解决方法

1. 问题描述 当我们使用 git push 推送代码出现以下问题时&#xff1a; 2. 原因分析 这个错误提示表明当前本地分支落后于远程分支&#xff0c;因此需要先拉取远程的更改。 3. 解决方法 1、拉取远程更改 在终端中执行以下命令&#xff0c;拉取远程分支的更新并合并到本地…

SpringBoot学习笔记(1)

1.Web技术基础 BS:(Browser/Server,浏览器/服务器架构模式)。C/S架构主要特点是交互性强&#xff0c;具有安全访问模式&#xff0c;网络流量低&#xff0c;响应速度快&#xff0c;因为客户端负责大多数业务逻辑和UI演示&#xff0c;所以也被称为胖客户端&#xff0c;C/S结构的软…

【含文档】基于Springboot+微信小程序 的中心医院用户移动端(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定…

学习之什么是生成器

什么是生成器&#xff08;Generator&#xff09; 1、是一种数据类型能源源不断地生成数据 2、"惰性"特点:一次生成一个值&#xff0c;而不是生成一个序列 3、生成器一定是迭代器比迭代器更简洁使用生成器表达式创建生成器 from typing import Generator, Iterator,…

【hot100-java】【柱状图中最大的矩形】

R9-栈篇 面积最大矩形的高度一定是 heights 中的元素 简单解释&#xff0c;就是说&#xff0c;最大高度必然是heights中的一个元素&#xff0c;我们假设是h&#xff0c;然后我们基于h&#xff0c;左右拓展&#xff0c;尽量拓展到h越来越高&#xff08;符合单调栈&#xff09;&a…

7.6透视变换

基本概念 在计算机视觉和图像处理领域中&#xff0c;透视变换&#xff08;Perspective Transformation&#xff09;是一种重要的几何变换&#xff0c;用于模拟从一个视角到另一个视角的变换&#xff0c;比如从鸟瞰视角到正面视角的变换。透视变换通常用于图像配准、增强现实、…

ubuntu报错you don‘t have enough free space in /var/cache/apt/archivers.

使用df -h命令查看&#xff1b; 扩充前&#xff0c;dev/sda2的大小&#xff1a; 使用gparted工具对dev/sda2进行扩容