语法综述:
- 在
位运算
中,JS会强制将运算目标转换成有符号的32位整数
。引用类型
的比较,如果不是同一个变量或其引用,则两个变量既不全等
也不相等
- 比较只有两个元算元都是字符串时,才使用字符串序列检测,任意一个运算元为非字符串时,都将按照值进行比较。
- 赋值是运算而不是语句。
- 字符串限制(不可变性):
- 不能直接修改字符串的字符
- 字符串的连接必然导致写复制,这将产生新的字符串
- 不能修改字符串的长度,如:修改
length
无效
- 语句存在返回值
- 表达式概念:
由运算数和操作符构成,并产生结果的语法结构
JS 规则:
- 程序是由语句构成的。
- 空语句,变量声明,函数声明以及控制子句都不会产生返回值
- 换行符和文本结束符前可以没有
';'
- 复制表达式具有声明隐士变量的效果
- 标签可以与变量重名而互不影响,因为它是另一独立的语法元素。
break
子句不但可以作用与循环与条件分支内部,也可以作用与标签化语句内部- JS中的数组,既是能以下标索引的索引数组,又是一个可以存取属性的关联数组,因此
for ... in
的属性提取对数组有效- JS 中任何类型的值都能作为对象的属性
- delete 无法删除用
var
声明的变量;直接继承的原型链上的成员。删除宿主成员的能力要看浏览器提供与否instanceof
运算符用来测试一个对象在其原型链中是否存在一个构造函数的 prototype 属性- 用 in 能检测到的属性用for...in不一定能列举;原型链成员能被for...in列举,却不能被propertyIsEnumerable()列举(只检测对象的非继承属性)。
二义性
- 如果+表达式中存在字符串,则优先字符串连接
- 二义性中,语句优先
+
,{}
,[]
,()
,,
,:
皆存在二义性