JS数据类型类型转换

基本数据类型

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 = 100console.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) // truelet b = 0b = Boolean(b) // false

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

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

字符串

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

let a = "" // falselet b = "    " //true

其余null和undefined都会转换为false

对象通常都会转换为true

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

image

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

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

相关文章

【含文档】基于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.功能 系统定…

[C++]栈队列改成模板类

栈、队列都更改成模板类 栈 .hpp #ifndef MY_STACK_H #define MY_STACK_H #include <iostream>using namespace std;template<typename T> class my_stack { private:T *base;//动态栈指针int top;//栈顶元素int size;//栈大小 public:my_stack();//无参构造my_…

【工具类】证书自动续签免费版 正式发布

证书自动续签免费版 正式发布 1.控制台首页2.申请证书2.1.支持自动解析和手动解析两种模式2.2.LB&#xff08;负载均衡&#xff09;支持主流的云厂商2.3.CDN&#xff08;内容分发&#xff09; 支持主流的云厂商2.4.对象存储&#xff08;OSS&#xff09;支持主流云厂商2.5DCDN&a…

Linux云计算 |【第四阶段】RDBMS1-DAY2

主要内容&#xff1a; 常用函数&#xff08;函数分类1&#xff1a;单行、分组&#xff1b;函数分类2&#xff1a;字符、数学、日期、流程控制&#xff09;、分组查询group by、连接查询 一、常用函数 1. 按使用方式分类 ① 单行函数 单行函数&#xff08;Scalar Functions&…

manim页面中不规则分割整个人页面。

界面中的分割方式 在信息设计中&#xff0c;我们常常需要通过分割设计的方式来对信息进行分组&#xff0c;界面中的分割方式大致分为三种&#xff1a;卡片、线条、留白。 界面中的分割方式主要可以分为以下几种&#xff1a; 一、根据规则进行分割&#xff1a; 规则网格分割&…

游戏如何对抗改包

游戏改包是指通过逆向分析手段及修改工具&#xff0c;来篡改游戏包内正常的设定和规则的行为&#xff0c;游戏包被篡改后&#xff0c;会被植入/剔除模块进行重打包。 本期图文我们将通过实际案例分析游戏改包的原理&#xff0c;并分享游戏如何应对改包问题。 安卓平台常见的改…

大数据的挑战是小文件

小文件可能会给存储平台及其支持的应用程序带来大问题。在 Google 上搜索 “small files performance” 会产生 2M 的结果。这篇博文将更深入地研究小文件问题&#xff0c;深入研究其根源并总结解决方案。 问题陈述 出于本讨论的目的&#xff0c;小文件通常被视为小于 64 KB …

蓝桥杯【物联网】零基础到国奖之路:十二. TIM

蓝桥杯【物联网】零基础到国奖之路:十二. TIM 第一节 理论知识第二节 cubemx配置 第一节 理论知识 STM32L071xx器件包括4个通用定时器、1个低功耗定时器&#xff08;LPTIM&#xff09;、2个基本定时器、2个看门狗定时器和SysTick定时器。 通用定时器&#xff08;TIM2、TIM3、…

32 C 语言指针的长度与运算(指针加减整数、指针自增自减、同类型指针相减、指针的比较运算)

目录 1 指针的长度 2 指针与整数的加减运算 3 指针自增与自减 4 同类型指针相减 5 指针的比较运算 6 测试题 1 指针的长度 在 C 语言中&#xff0c;sizeof 运算符可以用来计算指针的长度。指针的长度实际上与指针所指向的数据类型无关&#xff0c;而是与系统的位数&…

怎么通过AI大模型开发一个网站?

目录 一、提示词与AI输出 二、网站效果 以前不会代码开发&#xff0c;写网站是不可能的事情&#xff0c;现在有了AI&#xff0c;一切都有了可能。以下是我通过通义千问大模型开发的简单网站。 一、提示词与AI输出 提示词1 你是python程序员&#xff0c;我有一个大的需求&am…

Charles(青花瓷)抓取https请求

文章目录 前言Charles&#xff08;青花瓷&#xff09;抓取https请求 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差&#xff0c;实在白嫖的话&…

QTreeview model过滤

QTreeview model数据过滤&#xff1a;大小写区分&#xff0c;对列过滤&#xff0c;对子对象过滤 示例&#xff1a; 需要自定义QSortFilterProxyModel, //自定义过滤model mProxyModel new TreeFilterProxyModel(this); //添加treeview当前model mProxyModel->setSource…

re轻松拆分四则运算expression(^从头匹配、(?:xxxx)非捕获组、| 交替运算符联合演习)

与ai对抵聊“算式匹配”&#xff0c;发现^从头匹配、(?:xxxx)非捕获组、| “交替”运算符联合使用的妙处。 (笔记模板由python脚本于2024年09月27日 18:35:32创建&#xff0c;本篇笔记适合喜欢python喜欢正则的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;…

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

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

Flume入门到实践--Flume的安装与基础概念与安装实战

在当今大数据时代&#xff0c;有效管理和处理海量日志数据对于企业获取洞察和保持运营效率至关重要。为此目的设计的强有力工具之一是 Apache Flume。本文将带您探索Flume&#xff0c;了解其功能、安装方法以及一些实际用例&#xff0c;以展示其在处理日志数据方面的有效性。 …

逻辑回归(中):数学公式学习笔记 LaTeX 版

背景 闲来无事翻了一下之前买的一个机器学习课程及之前记录的网络笔记&#xff0c;发现遇到公式都是截图&#xff0c;甚至是在纸上用笔推导的。重新整理一遍之前逻辑回归函数的学习笔记&#xff0c;主要是为了玩一下 LaTex 语法&#xff0c;写公式挺有意思的。 整理之前三篇笔…

机器学习-SVM

线性感知机分类 支持向量机 线性感知机&#xff08;Perceptron&#xff09; 感知机是线性二值分类器。 注意&#xff1a;什么是线性&#xff1f;线性分割面就是&#xff0c;就是在分割面中&#xff0c;任意两个的连线也在分割面中&#xff0c;这个分割面&#xff0c;就是线…

debian linux 只安装mysql client

查询系统版本 执行cat /etc/os-release 可以看到是debian11 rootservice-headquarters-hg-self-data-report-844ccf78b-6ls7t:/mysql#cat /etc/os-release PRETTY_NAME"Debian GNU/Linux 11 (bullseye)" NAME"Debian GNU/Linux" VERSION_ID"11&quo…

DOM元素导出图片与PDF:多种方案对比与实现

背景 在日常前端开发中&#xff0c;经常会有把页面的 DOM 元素作为 PNG 或者 PDF 下载到本地的需求。例如海报功能&#xff0c;简历导出功能等等。在我们自家的产品「代码小抄」中&#xff0c;就使用了 html2canvas 来实现代码片段导出为图片&#xff1a; 是不是还行&#xff…

【STM32】SPI回顾

一、定义 SPI是Motorola首先提出的全双工四线同步串行外围接口&#xff0c;采用主从模式&#xff08;Master-Slave&#xff09;架构。 二、单机与多机通信 4线SPI器件有四个信号&#xff1a;时钟(SPI CLK, SCLK)、主机输出从机输入(MOSI)、主机输入从机输出(MISO)、片选(CS/N…