一. 数据类型
计算机程序可以处理大量的数据,为什么要给数据分类?
- 更加充分和高效的利用内存;
- 也更加方便程序员的使用数据。
数据类型分为两大类:基本数据类型和引用数据类型
1.原始类型:
- number 数字型
- string 字符串型
- boolean 布尔型
- undefined 未定义型
- null 空类型
2.引用类型:
- object 对象型
- function 函数类型
- array 数组类型
number-数字类型
与Java不同,JavaScript是一种弱数据类型语言,所以此处number表示所有数字,包括整数、小数、正数、负数。
弱数据类型是指只有在赋值之后我们才能知道变量到底属于哪种类型。
let age = 18
let score = 18.1
let name = '小明' - 1 //此时name的值是NaN
console.log(NaN + 1) //NaN
NaN: 代表一个错误。它是一个不正确的或者一个未定义的数学操作所得到的结果。
NaN是粘性的,任何对NaN的操作都会返回NaN。
string-字符串类型
通过单引号('')、("")、(``)包裹的数据都叫字符串 ,推荐使用单引号
注意:
- 无论单引号还是双引号必须成对使用
- 单引号/双引号可以互相嵌套,但是不能自己嵌套自己
- 必要时可以使用转义字符
\
,用来输出单引号或双引号
字符串拼接: 用+
可以实现字符串的拼接。但是有更好用的方法:模板字符串
模板字符串:
- 使用反引号``
- 内容拼接变量时,用
${}
包住变量
//使用前
document.write('大家好,我是' + name + ',今年' + age + '岁了')
//使用后
document.write('大家好,我是${name},今年${age}岁了')
boolean-布尔类型
布尔类型在计算机中用来表示肯定或否定。
两个固定值:true
和false
。
undefined-未定义类型
未定义类型是一个特殊的类型,只有一个值 undefined
什么情况下会出现未定义类型?
只声明了变量,不赋值的情况下,变量默认的值就是 undefined ,一般不会直接为值赋为 undefined
使用场景:
我们开发中经常先声明一个变量,等待传送过来的数据。
如果我们不知道这个数据是否传递过来,此时我们可以通过检测这个变量是不是undefined,就判断用户是否有数据传递过来。
null-空类型
仅仅用来表示“无”、“空”、“未知值”的特殊值。
null 和 undefined 的区别:
- undefined 表示没有赋值
- null 表示赋值了,但是内容是空
使用场景:
把 null 作为尚未创建的对象。
将来有个变量里面存放的是一个对象,但是对象还没创建好,可以先给个 null。
二. 数据类型检测
通过控制台输出语句判断
控制台输出语句时,数字型和布尔型颜色为蓝色,字符串和undefined为灰色
通过 typeof 关键字检测
typeof 运算符可以返回被检测的数据类型。它支持两种语法:
- 作为运算符:
typeof x
(推荐) - 函数形式:
typeof(x)
三. 类型转换
为什么要类型转换?
JavaScript是弱数据类型:JavaScript也不知道变量到底属于那种数据类型,只有赋值了才清楚。
但是当我们使用表单、prompt获取过来的数据默认是字符串类型的,此时不能直接简单的进行加法运算。
console.log('1000' + '200') //此时输出不是1200,而是1000200
所以我们需要把一种数据类型的变量转换成我们需要的数据类型。
隐式转换
某些运算符被执行时,系统内部自动将数据类型进行转换,这种转换称为隐式转换。
规则:
+
两边只要有一个是字符串,都会把另外一个转成字符串- 除了
+
以外的算术运算符- * /
等都会把数据转为数字类型
特殊:
+
号作为正号解析时,可以将后面的字符串转换成数字型- 任何数据和字符串相加结果都是字符串
<script>
console.log(11 + 11) //22
console.log('11' + 11) //1111
console.log(11 - 11) //0
console.log('11' - 11) //0
console.log(1 * 1) //1
console.log('1' * 1) //1
console.log(typeof '123') //string
console.log(typeof +'123') //number
console.log(+'11' + 11) //22
let num1 = prompt('请输入num1') //此时num1是string类型
let num2 = +prompt('请输入num2') //此时num2是number类型
</script>
显式转换
编写程序时过度依靠系统内部的隐式转换是不严禁的,因为隐式转换规律并不清晰,大多是靠经验总结的规律。
为了避免因隐式转换带来的问题,通常根据逻辑需要对数据进行显式转换。
转换为数字型:
Number(数据)
- 转成数字类型
- 如果字符串内有非数字,则转换失败结果显示为
NaN(Not a Number)
即不是一个数字 - NaN也是number类型的数据,代表非数字
parseInt(数据)
- 只保留整数
- 会从左往右识别,如果先有数字后有非数字则只会保留数字,如果先有非数字直接变
NaN
parseFloat(数据)
- 可以保留小数
转换为字符串类型:
- 数值 + ``
String(数据)
变量.toString()
- 括号里面可以跟进制