数据类型
基本数据类型:
number、string、boolean、undefined、null
引用数据类型:
object(object、array、function)
注意:
使用 typeof 方法检测数据类型时,typeof (null) 返回object, typeof (function) 返回function。所以使用typeof无法检测 null、array、object 这三种数据类型的具体类型。
typeof(1);//number
typeof("1");//string
typeof(true);//boolean
typeof(undefined);undefined
typeof(null);//object
typeof(object);//object
typeof(array);//object
typeof(function);//function
运算符
”+“,”-“,”*“,”/“,”%“,”++“,”--“,”**“
算数运算符
减乘除参与运算时按正常数学流程走,加号参与运算时承担一个连接符的作用,如果一个string类型的数字和一个number类型的数字相加,加号不会把string类型的数字转化成number类型的数字参加运算,而是发挥连接符的作用,使两者相连,一个字符串和任意类型数据进行+运算,都是字符串的拼接。
boolean参与计算时 true转换成1,false转换成0
undefined参与运算时 数字与undefined计算的值为undefined,字符串与undefined发生拼接
null参与运算时 数字与null计算时,null的值被当作0,字符串与null发生拼接
自增自减运算符
无论 i++还是 ++i,i的值都会增加1 i++是先使用i的值再+1,++i是先+1再使用i的值
数值运算符
正号、负号运算符可以将其他类型的数据转换成number数据类型(隐式转换)
ES6新增 ** 指数运算符
2**3 == 2^3
具有右结合的特点
2**3**3 == 2**(3**3)== 54
比较运算符
>、<、<=、>=、==、===、!=、!== (做运算时可以进行隐式转换)
tip: JS中的整数在底层是以浮点数的形式存储的
- 如果比较运算符一侧是string一侧是number,会将string的数据类型自动转变为number类型进行比较
- 如果比较运算符两侧都是string类型,会按照string的每一位从左到右进行比较,比较的是string的unicode码,一旦得到结果就不继续比较了。
- 不论什么编码方式,0-127与ASCII值一样
0-48, A-65, a-97
1-49, B-66, b-98
…….. …….. …….
9-57, Z-90, z-122
因为是双等好就是操作数的对比,他们两的内存空间都没有操作数所以相等,
由于内存空间的地址不同所以他们===是false,
var a = undefined;
var b = null;
console.log(a,typeof(a));//undefined,undefined
console.log(b,typeof(b));//null,object
console.log(a == b);//true