第四章 表达式和运算符
P66 运算符优先级,从上到下:
![6bc2d44340a5db99717936bf29bfd10](第一部分 JavaScript语言核心.assets/6bc2d44340a5db99717936bf29bfd10.jpg)
-
p68 属性访问表达式和调用表达式的优先级比运算符优先级都要高,eg:
typeof my.functions[x](y) //typeof在两次属性访问和函数调用后执行
赋值运算优先级极低,通常最后执行。
-
P69 R:从右至左结合性
x = ~-y; //x = ~(-y)
w = x = y = z; //w = (x = (y = z))
q = a?b:c?d:e?f:g; //q = a?b:(c?d:(e?f:g)) -
P69 运算顺序
P72 ++x和x=x+1并不完全一样。++不进行字符串连接操作。如X为“1”,前者为2,后者为“11”。
-
P75
1、"==="
- 如果两个值都是null或者都是undefined,则它们不相等;
- 如果其中一个值是NaN或者两个都是NaN,name它们不相等;
- 0和-0相等;
- 两个字符串含义和字符完全一样,但具有不同编码的16位值,JS并不对Unicode进行标准化转换,因此“=”和“”都不相等。String.localeCompare()提供了另外一种比较字符串的方法。
2、"=="
- null==undefined;
第五章 语句
P84 eval()、全局eval() 用时整理
P110 try/catch/finally语句,抛出与执行顺序问题 用时整理
P113 with语句:扩展作用域链,尽可能避免使用