news 2026/1/27 17:28:38

js数据类型与运算符

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
js数据类型与运算符

目录

前言:

变量的数据类型:

数据类型的分类:

简单数据类型:

一、数值型 Number

1、数字型进制

2、数字型范围(JS中数值的最大值和最小值)

3、数值型计算

4、isNaN

5、typeof 来检查一个变量的类型,并输出

二、字符串string

1、基本语法:

2、字符转义符:

3、字符串长度

4、字符串拼接

5、字符串拼接变量

三、布尔值 Boolean

四、未定义 Undefined

五、空值Null

面试题:用typeof去检测null得到的是什么,为什么?

数据类型转换

1、转换为字符串类型

.toString()方法

String()方法

拼接字符串(隐式转换)

2、转换为数值型

方式一

方式二

方式三

方式四

3、转换为布尔型

Boolean()函数

两次取反 !!双非 隐式转换

面试题:数据转成为false的几种情况?(6种)


前言:

为什么需要数据类型?

在计算机中,不同的数据所需占用的存储空间是不同的,为了便于把数据分成所需内存大小不同的数据,充分利用存储空间,于是定义了不同的数据类型。简单来说,数据类型就是数据的类别型号


变量的数据类型:

JS是一种弱类型或者动态语言。这就意味着不用提前声明变量的类型,在程序运行过程中,变量的数据类型是根据等号右边的值来自动确定的。

JS拥有动态类型,同时也意味着相同的变量可用作不同的类型

数据类型的分类:

简单(一般)数据类型(Number、String、Boolean、Udefined、Null、Symbol、binInt)

复杂(引用)数据类型(Object,Function、Array、Date、RegExp、Math,Number,String,Boolean·····)


简单数据类型:

简单数据类型

解释说明

默认值

Number

数值型,包含整数值和浮点型,如12,1.2

0

Boolean

布尔值类型,true、false,等价于1、0

false

String

字符串类型,如'王二麻',字符串都带引号

'',"",``

Undefined

未定义,例如: var a;此时a=undefined

undefined

Null

空值;例如 :var a=null

null

一、数值型 Number
1、数字型进制

常见的进制有二进制、八进制、十进制、十六进制,在JS中,八进制前面加0,十六进制前面加0x

2、数字型范围(JS中数值的最大值和最小值)

Number.MAX_VALUE//1.7976931348623157e+308

如果使用Number表示的数字超过了最大值,则会返回一个Infinity表示正无穷

使用typeof 检查infinity也会返回number

Number.MIN_VALUE大于0的最小值 //5e-324

NaN 是一个特殊的数值,表示Not A Number, 非数值

使用typeof 检查NaN也会返回number

var a = 123; a = 456.789; //下面的数值会覆盖上面的 var b = 123; //这是数字123 console.log(typeof a); //number a = Number.MAX_VALUE; //最大值 // console.log(a) a = Number.MIN_VALUE; //最小值 // console.log(a) a = "abc" * "bcd"; //console.log(a); //NaN

3、数值型计算

在Js中整数的运算基本可以保证精确

如果使用JS进行浮点数的运算,可能得到一个不精确的结果

var c = 1 + 2; console.log(c);//3 var d = 0.1 + 0.2; //如果使用JS进行浮点元素,可能得到一个不精确的结果 console.log(d);//0.30000000000000004
4、isNaN

用来判断NaN,并返回一个布尔值,如果判断的是NaN,则返回true,

如果判断的不是NaN,则返回false

判断一个值能否被 Number() 合法地转化成数字

console.log(isNaN(123));//false console.log(isNaN(NaN));//true
5、typeof 来检查一个变量的类型,并输出

语法:typeof 变量

检查字符串时,会返回string; 检查数值时,会返回number·····

返回的string、number、boolean等值,这些返回值的类型是string


二、字符串string
1、基本语法:

字符串型可以是引号中的任意文本,其语法为双引号""和单引号''、反引号``,一般js中建议用双引号"",js可以用单引号嵌套双引号,或者用双引号嵌套单引号

2、字符转义符:

转义符都是\开头的,,写在当单双引号里面的,常用的转义符及其说明如下

转义符

解释说明

\n

换行符,n表示newline的意思

\\

斜杠\

\'

'单引号

\"

"双引号

\t

tab缩进

\b

空格,b是blank的意思.

3、字符串长度

字符串是由若干字符组成的,这些字符的数量就是字符串的长度。length属性可以获取整个字符串的长度

4、字符串拼接

多个字符串之间可以使用+进行拼接,其拼接方式为字符串+任意类型=拼接新字符串

拼接前会把字符串相加的任意类型转成字符串,再拼接成一个新的字符串;

5、字符串拼接变量

字符串和变量拼接,变量不能写在引号里面,需要用 + 拼接变量

分 单引、双引、反引(反引可以识别换行)

let age=20 let res1 = "我今年"+age+"岁了"; console.log(res1); let res2='我今年'+age+'岁了' console.log(res2); let res3=`我今年`+age+`岁了` res3=`我今年${age}岁了`

三、布尔值 Boolean

布尔值只有两个值,用来做逻辑判断

true -表示真 false -表示假

使用typeof检查一个布尔值时,会返回boolean

当进行数值运算的时候,true为1,false为0


四、未定义 Undefined

Undefined类型的值只有一个,就是undefined

当声明了一个变量,但是并不给变量赋值时,它的值就是undefined

使用typeof检查一个undefined时也会返回undefined

当进行数值运算时,结果为NaN,除了和字符串做拼接


五、空值Null

null这个值专门用来表示空

使用typeof检查一个null值时,会返回object

当进行数值运算时,null为0

使用场景:1、不知道是什么对象先占位

2、释放内存


面试题:用typeof去检测null得到的是什么,为什么?

Javascript在存储数据的时候,不同的数据在底层存储都使用二进制的方式存储,在Javascript中如果二进制的前三位都为0的话,就会被判断为object,null是js后期添加的数据类型,它的二进制存储表示形式为全是0,自然前三位也是0,因此执行typeof时会返回”object”,这本身也是这门语言的BUG。

可以使用Object.prototype.toString.call()方法来解决这个问题

let n = null; let res = Object.prototype.toString.call(n);//通用的数据类型检测方式 console.log(res);

数据类型转换

使用表单、prompt获取过来的数据默认是字符串类型的,此时就不能直接进行数值运算,需要将字符串转为数值类型

强制类型转换:指将一个数据类型强制转换为其他的数据类型

通常三种转换

1、转换为字符串类型

2、转换为数字型

3、转换为布尔型


1、转换为字符串类型
.toString()方法

调用被转换数据类型的toString()方法 语法:变量.toString()

该方法不会影响到原变量,它会将转换的结果返回 语法:str=变量.toString()

注意:null和undefined这两个值没有toString的方法,如果调用他们会报错

// 简单(一般、基本)数据类型:Number,String,Boolean,Undefined,Null // 数据类型的相互转换 // 将数据转成string类型 Number Boolean,Undefined,Null let data = 1 data = true data = undefined data = null // 方式一:toString() 变量名.toString() //null, undefined无法通过.toString()方式转换为string类型 // let res = data.toString() console.log('data转换前', data, typeof data); console.log('data转换后', res, typeof res);
String()方法

调用String()函数,并将被转换的数据作为参数传递给函数, 语法:String(变量)

使用String()函数做强制类型转换时,对于Number和Boolean实际上就是调用的toString的方法

但对于null和undefined,就不会调用toString()方法, 它会将null直接转换为"null", 将undefined 直接转换为"undefined"

拼接字符串(隐式转换)

和字符串拼接的结果都是新字符串,语法:变量 + ' '


2、转换为数值型
方式一

使用Number()函数

字符串-->数字

1:如果是纯数字的字符串,则直接将其转换为数字

2:如果字符串中有非法的数字的内容,则转换为NaN

3:如果字符串是一个空串,或者全是空格的字符串,则转换为0

布尔值--->数字

true--1 false--0

Null --->数字 0

Undefined --->数字 NaN


方式二

parseInt() 取有效整数

parseFloat() 取有效浮点数

可以将一个字符串中的有效的数取出来,转换为Number,

如果对非String使用parseFloat()跟parseInt(),它会先将其转换为String,然后再操作

方式三

算术运算 -0 *1 /1 隐式转换(+ 会拼串)

a = "123"; a = a - 0;//123 a = a / 1;//123 a = a * 1;//123 console.log(a, typeof a);
方式四

正号 隐式转换

注意和加号的区别,这是写在字符串前面的

let data = '123' data = '123abc^%w' data = '' data = true data = false data = undefined data = null let strData = +data console.log(data, typeof data, '旧值'); console.log(strData, typeof strData, '新值');
3、转换为布尔型
Boolean()函数

将其他类型转成布尔值

数字-->布尔 除了0跟NaN是false,其他的都是true

字符串-->布尔 除了空串是false,其余都是true

null和undefined都会转换为false

对象会转换为true


两次取反 !!双非 隐式转换
let s1 = ""; s1 = "abc"; s1 = undefined; s1 = null; s1 = 123; s1 = 0; console.log("原值:", s1); console.log("原值类型:", typeof s1); let res = !!s1; console.log("转换之后值:", res); console.log("转换之后值类型:", typeof res);
面试题:数据转成为false的几种情况?(6种)

0, ' ', false, undefined, null, NaN

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/27 0:07:00

【性能测试】15_JMeter _JMeter插件安装使用

文章目录一、插件管理包工具安装和删除1.1 安装1.2 删除二、插件安装方法2.1 安装插件2.2 查看已安装的插件三、常用插件3.1 Concurrency Thread Group 线程组3.2 Transactions per Second 每秒事务数3.3 PerfMon Metrics Collector 性能指标收集器3.3.1 实现步骤3.3.2 windows…

作者头像 李华
网站建设 2026/1/27 13:45:38

StatsBomb开放数据终极指南:免费足球数据分析完全手册

StatsBomb开放数据终极指南:免费足球数据分析完全手册 【免费下载链接】open-data Free football data from StatsBomb 项目地址: https://gitcode.com/gh_mirrors/ope/open-data 想要深入了解足球战术却苦于没有专业数据?StatsBomb开放数据平台为…

作者头像 李华
网站建设 2026/1/26 22:45:32

高效语音转文字+情感事件识别|SenseVoice Small镜像快速上手指南

高效语音转文字情感事件识别|SenseVoice Small镜像快速上手指南 1. 快速入门:从零开始使用SenseVoice Small 你是否正在寻找一个既能精准识别语音内容,又能捕捉说话人情绪和背景声音的工具?如果你的答案是“是”,那这…

作者头像 李华
网站建设 2026/1/27 5:43:22

SAM 3实战体验:一键分割图片中的任意物体

SAM 3实战体验:一键分割图片中的任意物体 1. 引言:让图像分割变得像说话一样简单 你有没有遇到过这样的情况:想从一张复杂的图片里把某个特定物体单独抠出来,但手动操作太费时,专业软件又太难上手?现在&a…

作者头像 李华
网站建设 2026/1/25 22:09:59

Qwen-Image-2512影视概念设计:场景图生成系统实战

Qwen-Image-2512影视概念设计:场景图生成系统实战 你有没有想过,只用一句话描述,就能生成一张堪比电影级的场景概念图?比如“一座被藤蔓覆盖的废弃太空站,黄昏时分,远处有双星沉入地平线”——现在&#x…

作者头像 李华
网站建设 2026/1/25 23:11:21

中文ITN实战:用FST ITN-ZH镜像高效规整语音文本

中文ITN实战:用FST ITN-ZH镜像高效规整语音文本 在语音识别(ASR)的实际应用中,一个常被忽视但极其关键的环节是——如何把“说出来的内容”变成“能用的数据”。比如用户说“二零零八年八月八日”,ASR输出的是文字没错…

作者头像 李华