js数据类型和运算符

184 阅读3分钟

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 可以创建一个独一无二的值(但并不是字符串)

详情看链接

zhuanlan.zhihu.com/p/22652486

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