1.数据为什么需要类型?
拿数字和字符串举例
1.功能不同
(1)数字是数字,字符串是字符串,要严谨
(2)数字可以表示加减乘除,字符串不行
(3)字符串可以表示电话号码,数字不行
2.储存形式不同
(1)js中数字是用64位浮点数的形式储存的
(2)js中字符串是UTF-8的形式储存的(UCS-2)
2.如何存数字
1.二进制
(1)十进制转二进制:
这种方法简单明了
(2)二进制转十进制
(3)用十六进制来表示二进制
3.如何存字符
第一阶段:用编号表示,用0-127表示所有的符号;48表示0、65表示A、97表示a
第二阶段:中国国家标准局指定了一套编码为:国标2312
第三阶段:微软推出了国标扩展:GBK
第四阶段:万国码:Unicode(包含所有的字,但是太大了)
第五阶段:UTF-8就出世了(存法比较鸡贼,想餐厅排队,几个人一桌差不多)
4.js的数据类型(简单数据类型)
7种:number(数字)、string(字符串)、bool(布尔)、symbol(符号)、undefined(空未定义的)、null(空)、Object(对象) 四基两空一对象
1.number(数字)
JS 的 number 全都是以小数(浮点数)的形式存储的,没有单独的整数
1.特殊值:
(1)+0、-0
(2)无穷大:Infinity、+Infinity、-Infinity
(3)无法表示的数字:NaN(not a number)但是它是一个数字
2.64位浮点数:
(1)符号占一位
(2)指数占十一为(-1023~1024)
(3)有效数字占52位(开头的1省略)
3.范围和精度
(1)范围(忽略符号位)
最大二进制数:Number.MAX_VALUE;(1.7976931348623157e+308)
最小二进制数:Number.MIN_VALUE;(5e-324)
(2)精度
最多只能到52+1个二进制位来表示有效数字
2^53对应的十进制是9后面15个零
2.string
1.三种写法:单引''、双引""、反引号``
2.转意加上\就可以了
3.base64转码
(1)window.btoa
正常字符串转base64编码的字符串
(2)window.atob
base64编码的字符串转为正常的字符串
3.bool
(1)只有两个值:true、false
(2)五个为falsy的值:falsy相当于falsy,但又不是false的值
undefined、null、0、NaN、""
(3)解释一下undefined和null
如果一个变量声明了但没有赋值,默认值就是undefined
如果一个函数没有写return,默认return undefined
前端程序员习惯,把非对象的控制写为undefined,把对象的控制写为null
4.symbol
Symbol 的用途就是:Symbol 可以创建一个独一无二的值(但并不是字符串)
详情看链接
5.Object
比较复杂,单独写
5.变量声明
三种变量声明方式
var a = 1;let a = 1;const a = 1;
(1)var声明
有变量提升,过时的,不好用的方式
(2)let声明
遵循块作用域,使用范围不能超过{};
不能重复声明;
可以赋值,也可以不赋值;
必须先声明在使用,否则报错;
全局声明的let变量,不会变成window属性;
for配合let有奇效
(3)const声明
和let差不多一样,只有一点,声明时就要赋值,而且值为常量的时候,不可更改
6.类型转化
1.字符串转数字
(1)Number("2")
(2)parseInt()、parseFloat()
(3)“5”-0
2.数字转字符串
(1)String(123)
(2)123+“”
(3)123.toString()
3.布尔
Boolean(0);//false
!!0;//false