JavaScript的7种数据类型以及隐式类型转换

目录

JavaScript的7种数据类型

6种基本数据类型

Undefined

Null

Symbol

Boolean

Number

String

1种复杂数据类型

Object

隐式调用函数

Boolean(obj)

Number(obj)

String(obj)​​​​​​

存在隐式调用的操作符

一元运算符

++/--/+/-(这里的+/-理解为正负的符号)

二元运算符

+(不表示数字正负号,只表示数值之间的加法)

-、*、/、%(不表示数字正负号,只表示数值之间的减法)

&、^、~、|、<<、>>、>>>(按位与/按位异或/按位非/按位或/按位左移/按位右移/无符号按位右移)

==、!=

>、>=、<、<=

&&、||(逻辑与、逻辑或)

存在隐式调用的语句

if(a){}

while(a){}

for(;a;){}

document.write(a)

Number.isNaN/Number.isInfinity/Number.isInteger(a)


JavaScript的7种数据类型

6种基本数据类型

Undefined

对申明了的未赋值变量系统自动赋的值。

Null

空对象指针。

Symbol

ES6 引入了一种新的原始数据类型,之后用到,会写一篇详细介绍。

Boolean

只有2个值true或者false。

Number

整数、浮点数和NaN

String

字符串。

1种复杂数据类型

Object

一组数据和功能的集合为对象,包括function、Array等。

隐式调用函数

Boolean(obj)

除以下类型其他返回true

  1. 布尔值false。
  2. 空字符串''。
  3. 0和NaN。
  4. null和undefined。

注意:Boolean('0')=true、Boolean(+'0')=false。

Number(obj)

JavaScript中常用函数方法(数值转换篇包括Math上的静态方法)_AIWWY的博客-CSDN博客

String(obj)​​​​​​

https://blog.csdn.net/AIWWY/article/details/114125693

存在隐式调用的操作符

一元运算符

++/--/+/-(这里的+/-理解为正负的符号)

先隐式调用函数Number()将操作符号连接的内容转换为数字类型再进行操作。

先隐式调用函数Boolean()将操作符号连接的内容转换为Boolean类型,再进行取反操作。

二元运算符

+(不表示数字正负号,只表示数值之间的加法)

如果连接两边有字符串存在则调用隐式函数String()将两边都转换为字符串进行连接。

如果连接两边无字符串存在则调用隐式函数Number()将两边都转换为数值进行计算。

特殊:{}+[]=0,这是因为系统把{}理解为空的代码块了而不是对象,所以仅执行了+[],而+[]等于0,这也能解释为什么赋值给变量值或颠倒顺序会有不同的答案(a={};b=[];a+b='[object Object]';[]+{}='[object Object]')。

-、*、/、%(不表示数字正负号,只表示数值之间的减法)

调用隐式函数Number()将两边都转换为数值进行计算。

&、^、~、|、<<、>>、>>>(按位与/按位异或/按位非/按位或/按位左移/按位右移/无符号按位右移)

先隐式调用函数Number()将操作符号连接的内容转换为数字类型再进行操作(NaN和Infinity的值都默认为0)。

注意没有无符号按位左移,无符号右移只在负数时有区别,即以0补充空位。

 按位非~运算介绍链接

https://blog.csdn.net/AIWWY/article/details/120321086

==、!=

同类型之间直接比较,其中注意对象之间的比较是引用值,即只有同一个对象才相同(例如{}=={}返回false,也包括数组[]==[]返回false),然后数值类型中NaN谁都不等于,包括自己。

不同类型比较:

  1. null==undefined返回true,且null或undefined参与比较时,不会有隐式类型转换,即只等于本身和对方。
  2. 其它两边都隐式调用Number()转换为数值类型后进行比较(即可以识别二、八、十六进制都会转换为十进制的进行比较)。

>、>=、<、<=

如果两个数都是字符串则比较两个字符串中的第一个元素对应的Unicode编码数值大小。

其它情况隐式的调用Number()转换为数值类型进行比较(NaN与任何数值进行比较都返回NaN)。

&&、||(逻辑与、逻辑或)

注意当是返回第一个参数时,第二参数是不会被执行的。

&&:当两参数中有不为Boolean类型的值时,对第一个参数隐式调用Boolean()函数

  1. 当第一个为true时,直接返回第二个参数。
  2. 当第一个为false时,直接返回第一个参数。

||:当两参数中有不为Boolean类型的值时,对第一个参数隐式调用Boolean()函数

  1. 当第一个为true时,直接返回第一个参数。
  2. 当第一个为false时,直接返回第二个参数。

存在隐式调用的语句

if(a){}

隐式调用Boolean()将a转换为true/false来判断{}中的语句是否执行。

while(a){}

隐式调用Boolean()将a转换为true/false来判断{}中的语句是否执行。

for(;a;){}

隐式调用Boolean()将a转换为true/false来判断{}中的语句是否执行。

document.write(a)

隐式调用a.toString()将a转换为字符串再执行该语句。

Number.isNaN/Number.isInfinity/Number.isInteger(a)

隐式调用Number()将a转换为数值类型再执行该语句。分别为判断是否为NaN、Infinity和整数。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值