1.运算操作符
+,-,*,/,%
除了加号外,其他运算符可以将字符串隐式转换成为数字
2.一元运算符
“+” 将操作数转化成为数字
将字符串进行拼接
"-"将操作数转化成为数字,并且变为负数
! 逻辑取反
++ 递增
当++放在前面时,先累加再进行赋值
var sum = 1;
var a = ++sum => 2
当++放在后面时,先赋值,后累加
var sum = 1;
var b = sum++ => 1
– 递减
与递增类似
delete 删除数组或者对象中的索引指定值
typeof 返回当前操作数的数据类型,基本数据类型直接准确返回
引用数据类型,Function返回’function’,其他返回’object’
void 对于任何值返回undefined
3.隐式转换
原始类型:Undefined、Null、String、Number、Boolean、Symbol
对象类型:object
基本数据类型的转换:通过加减乘除等符号 ==隐式转换
引用数据类型的转换:
当被Preferred标记为Number时,先调用valueOf()方法,如果返回原始值,则返回原始值
如果返回值不是一个原始值,则调用toString()方法,如果返回的是原始值,则返回原始值
否则抛出异常
当被Preferred标记为String时,先调用toString()方法,如果返回原始值,则返回原始值
如果返回值不是一个原始值,则调用valueOf()方法,如果返回的是原始值,则返回原始值
否则抛出异常
注意:只有对象为Date类型时,会被标记为String,其余的都是标记为Number
4.经典案例
[] + [] = ""
解释:不是Date对象,则被标记为Number,调用valueOf()方法,结果为[],不是原始值
继续调用toString()方法,结果为 "" ,类型是string,是原始值,则进行字符串拼接,结果为 "" 。
[] + {} = "[object Object]"
解释:不是Date对象,则被标记为Number,调用valueOf方法,[]的结果为[],{}的结果为{},不是原始值
继续调用toString()方法,[]的结果为"",{}的结果为"[object Object]",通过字符串拼接为"[object Object]"
是原始值。
{} + [] = 0
解释:在js中,一个{}为一个代码块,所以上面的等式被解析为了{}; + [],前面的空代码块被忽略,后面的+[]的原始值是
"",把""转化为Number结果是0。
{} + {} = "[object Object][object Object]"
解释:在node中,被解析为了{{} + {}}。
5.赋值运算符
=,+=,-=,*=,/=,%=
6.比较运算符
==:通过类型转换,其值能够相等
===:全等,即值和类型都相等。不通过类型转换
!=:不相等
!==:值不等或者类型不相等
>:大于
<:小于
>=:大于等于
<=:小于等于
注意:如果符号两侧都是字符串,不会把字符串转化成数值,而是比较Unicode编码,
在进行Unicode编码比较时,是一位一位进行比较的。
7.逻辑运算符
&&:逻辑和,当所有条件满足时为真
当第一个表达式为真,整个表达式结果取决于第二个表达式,返回第二个表达式
当第一个表达式为假,整个表达式为假,返回第一个表达式
如果第一个表达式是null,NaN,undefined,false,0,""可被转换为false的值的时候返回该值
[null,NaN,undefined,false,0,""]直接返回该操作数
||:逻辑或,有一个条件满足时为真
如果两个或多个操作数都是null,NaN,undefined,false,0,""可被转换为false的值的时候返回该值。
如果第一个操作数是null,NaN,undefined,false,0,"" 则返回第二个操作数。
如果第一个操作数是真,直接返回第一个操作数。
如果第一个表达式是假,真个表达式的结果取决于第二个表达式,返回第二个表达式
!:逻辑非,对操作数进行取反
8.三目运算符
基本语法为:expression ? sentence1 : sentence2
解释:当expression的值为真时执行sentence1,否则执行 sentence2
9.类型转换
其他类型转换为String:
除了null,undefined外,其他的基本数据类型都有一个toString()函数,可以根据输入的参数决定其进制
其他类型转换为Boolean:
通过Boolean()包装器
其他类型转换为Number:
Number()包装器
parseInt()函数
parseFloat()函数
+号
10.流程控制语句(分支,循环)
分支
if…Else语句
if…else if…else语句
switch case语句
循环
for语句
for/in语句:可以用来遍历对象属性
while语句
do/while语句