第三章 语言基础(三)

118 阅读2分钟

一、操作符

本小结介绍了如下的一些操作符:

操作符类型内容
一元+ - ++ --
~ &^ << >>
布尔! &&
乘性* / %
指数**
加性+ -
关系< <= > >=
相等== === != !==
条件? :
赋值= += -= *= /= %= <<= >>= >>>=
逗号,

大多数操作符的作用都非常熟悉了,下面只针对一些需要注意的地方简单介绍:

  • ++和--放在变量前后的区别:前缀变量值先变,后缀语句值先变

  • 一元加减:先Number()转型,再取正/负值

  • 按位非~相当于返回反码对应的值,即 ~n = -n - 1 = 补码 - 1

  • !! n = Boolean(n)

  • && 和 || 返回的不一定是布尔值。它们采取效率最高的方式判断返回值,比如 a && b,当 !!a 是true时会直接返回b,否则返回a。a || b,!! a是false时也会直接返回b,否则返回a。说白了,表达式返回值要么是a,要么是b。

  • 加性操作符都涉及隐式类型转换,但要注意加号有可能是字符串连接

  • 乘性操作符也会先用Number()转型,如果用n代表不是0、NaN、±Infinity的任意数值(假设是正数),那么:

    Infinity * 0 = NaN

    Infinity * n = Infinity

    Infinity * Infinity = Infinity

    Infinity / Infinity = NaN

    Infinity / n = Infinity

    Infinity / 0 = Infinity

    n / 0 = Infinity

    0 / 0= NaN

  • 两个字符串判断大小时是按编码来逐个判断的。

  • 判断相等时,null 和 undefined不转为数值去比较

  • 赋值时逗号操作符会返回最后一个值。

各操作符的优先级:

剩余操作符优先级非常低,因此 ...n+m 相当于 ...(n+m)。

操作符描述
()圆括号
n.name n['name']访问属性
n++ n--后缀递增/减
! ~ +n -n ++n --n非 一元 前缀递增/减
**指数
* / %乘性
+ -加性
< <= > >=关系
== === != !==等性
& ^ |按位
&&
||
? :三目
=赋值
...n剩余操作符
,逗号

二、语句

1、if-else

条件可以是任何表达式,会自动转型为布尔值

2、do-while循环

至少执行一次

3、while循环、for循环

尽量使用let声明迭代变量,限定作用域

4、for-in

用于枚举对象中的非符号键属性,最好使用const声明属性名。顺序不保证。

5、for-of

用于遍历可迭代对象的元素,常用于数组。

6、标签语句

常用于嵌套循环,不常用

7、break、continue

break用于结束整个循环,continue用于结束本次循环。

8、switch语句

条件可以是常量、变量、表达式。判断是否全等