typeof操作符(判断基本类型)
typeof undefined 返回的是字符串"undefined"(注意有引号)
.
这并不是说null的数据类型就是对象,而是JavaScript早期部署中的一个约定俗成,其实不完全正确,后来再想改已经太晚了,会破坏现存代码,所以一直保留至今。
.
按理说 除了六个基本类型 , 其余的全都是Object , 但是函数a返回的是"function"
和Null返回"Object"有一点像
instanceof运算符(判断对象复杂类型)
上图判断对象数组, 它是数组 , 所以返回true
Null 和 undefined
如果你想让一个变量是对象, 就初始化它为Null(是复杂类型 , 没有定义值),
如果你想让一个变量是基本类型, 就初始化它为Undefined(是基本类型,没有定义值)
数值运算符,负数值运算符
数值运算符的作用在于可以将任何值转为数值(与Number函数的作用相同)。
.
负数值运算符(-),也同样具有将一个值转为数值的功能,只不过得到的值正负相反。连用两个负数值运算符,等同于数值运算符。
b本身是不变的 , - b 是获取一个新的值
-(-1) //1 赋值运算符如果用到赋值身上要用括号 因为 -- 是递减操作符
.
这就是说,在JavaScript语言的底层,根本没有整数,所有数字都是小数(64位浮点数)
这个0.1 其实是一个非常接近0.1的二进制小数 , 0.2也是一样的
二进制无限不循环小数无法存储在计算机上 , 两个相似值加起来得到到也是 相似值
+ - * / % ++ --
上图从1到10选出3的倍数 , 利用了求mod
.
递增操作符 ++ 看下图
b为什么是1 ?
a先赋值给b , 让后a 自己一边加去
.
这一次就是 先++ 赋值 , 所以b就是2
递减操作符也是同样的道理
比较运算符
'a' > 'b'
上面的代码是可以比较 , 比较的是 Unicode 编码
=== 严格相等运算符 其中 复杂类型 都不相等
建议不用 == 和 !=
用=== 和 !==
void运算符
什么都是undefined
逗号运算符
'a' , 'b' // b
逗号运算符用于对两个表达式求值,并返回后一个表达式的值。
var a = 1 , b =1
// 相当于下面
var a = 1
var b = 1
也可以像上图这样用
运算符优先级
记优先级最高的 , 和优先级最低的
NaN
- 它是一个特殊的数字 , 它不和任何数字相等 , 是一个无法表示的数字
- 判断是不是NaN用Number.isNaN() , 而不是window.isNaN()
Infinity
判断是不是infinity用 window.isFinite()
parseInt & parseFloat
parseInt 的意思就是把字符串转化为整数
-
parseFloat 是把浮点数转化为整数
string
看到了吗 用 ` 可以包含换行
.
同时获取变量a 的值
+ 的作用
数字和字符串链接 会把数字转换成字符串