JS数据类型与转换,常见错误
一.数据类型
JS 数据类型整体分为两大类:
基本数据类型
引用数据类型
1.基本数据类型
1.1 number 数字型
赋值为数字的则为数字型,JavaScript 中的正数、负数、小数等 统一称为 数字类型。
数字可以有很多操作,比如,乘法 * 、除法 / 、加法 + 、减法 - 等等,所以经常和算术运算符一起。
数学运算符也叫 算术运算符,主要包括加、减、乘、除、取余(求模)。
注意点:
JS 是弱数据类型,变量到底属于那种类型,只有赋值之后,我们才能确认
Java是强数据类型 例如 int a = 3 必须是整数
1.2.string 字符串型
通过单引号( ‘’) 、双引号( “”)或反引号( ` ) 包裹的数据都叫字符串,单引号和双引号没有本质上的区别,推荐使用单引号。
注意点:
- 无论单引号或是双引号必须成对使用
- 单引号/双引号可以互相嵌套,但是不以自已嵌套自已(口诀:外双内单,或者外单内双)
- 必要时可以使用转义符 \,输出单引号或双引号
字符串拼接:
场景: + 运算符 可以实现字符串的拼接。
口诀:数字相加,字符相连
模板字符串
语法
`` (反引号)
内容拼接变量时,用 ${ } 包住变量
1.3.boolean 布尔型
表示肯定或否定时在计算机中对应的是布尔类型数据。
它有两个固定的值 true 和 false,表示肯定的数据用 true(真),表示否定的数据用 false(假)。
1.4.undefined 未定义型
未定义是比较特殊的类型,只有一个值 undefined。
什么情况出现未定义类型?
只声明变量,不赋值的情况下,变量的默认值为 undefined,一般很少直接为某个变量赋值为 undefined。
工作中的使用场景:
我们开发中经常声明一个变量,等待传送过来的数据。
如果我们不知道这个数据是否传递过来,此时我们可以通过检测这个变量是不是undefined,就判断用户是否有数据传递过来。
注意undefined是一种类型,也可以是一个值,而不是一个错误。
1.5.null 空类型
JavaScript 中的 null 仅仅是一个代表“无”、“空”或“值未知”的特殊值
null 和 undefined 区别:
lundefined 表示没有赋值
null 表示赋值了,但是内容为空
使用场景:
官方解释:把 null 作为尚未创建的对象
大白话: 将来有个变量里面存放的是一个对象,但是对象还没创建好,可以先给个null
1.6.检测数据类型
通过 typeof 关键字检测数据类型
typeof 运算符可以返回被检测的数据类型。它支持两种语法形式:
- 作为运算符: typeof x (常用的写法)
- 函数形式: typeof(x)
换言之,有括号和没有括号,得到的结果是一样的,所以我们直接使用运算符的写法。
2.引用数据类型
引用数据类型就是除基本数据类型外的数据,即Object对象类型,Array、Function、RegExp、Date都是对象类型。
比如:
对象类型:
let obj = {name: ‘对象’}
数组:
let arr = [1,2,3]
3.数据类型转换
3.1.显示转换
转换为数字型:
Number(数据)转成数字类型
如果字符串内容里有非数字,转换失败时结果为 NaN(Not a Number)即不是一个数字,NaN也是number类型的数据,代表非数字
相关函数:
parseInt(数据) 只保留整数
parseFloat(数据) 可以保留小数
转换为字符型: :
String(数据)
变量.toString(进制)
3.2.隐式转换
某些运算符被执行时,系统内部自动将数据类型进行转换,这种转换称为隐式转换。
规则:
+ 号两边只要有一个是字符串,都会把另外一个转成字符串
除了+以外的算术运算符 比如 - * / 等都会把数据转成数字类型
缺点:
转换类型不明确,靠经验才能总结
小技巧 :
+号作为正号解析可以转换成数字型
任何数据和字符串相加结果都是字符串
二.常见错误
常量没赋值:
age变量没有定义过
很可能 age 变量没有声明和赋值
或者我们输出变量名和声明的变量不一致引起的(简单说写错变量名了):
注意这里提示的not defined是个错误,不要与数据类型undefined混淆
提示 “age”已经声明
很大概率是因为重复声明了一个变量。
注意let 或者const 不允许多次声明同一个变量:
常量被重新赋值了
常量不能被重新赋值:
prompt 获取过来的是字符型,会出现字符相加的问题
prompt 如果出现相加,记得要转为数字型,可以 利用 + 最简单: