1. 分号是可以不写的。 没有分号会自动匹配下一行。
var a
a
=
3
var y=x+y
(a+b).toString() // 此处第二句会连到第一句 一般以( [ 开头的 都要加分号
2. 必须写分号:① return 和 break continue ② ++符号和--符号
x
++
y //代码等价于 x; ++y
3. 数据类型:原始类型(数字 字符串 布尔值 null undefined) 和对象类型
4. 除以0 的结果为Infinity或者-Infinity 而0除以0 给负数开根号等结果不是数字的操作结果为Nan
5. 0.3-0.2不等于0.2-0.1 因为js是二进制浮点数表示法
6. Date中 月份从0开始 天数从1开始
7. 使用replace等方法不会改变原字符串
8. null与undefined ==结果是true ===结果是false
9. 对三个基础类型赋值属性值的时候 修改只是临时的 不会保留下来。
10. 两个单独的对象永不相等
11. 所有对象都转化为true
12. js的变量是函数作用域 且js会声明提前 所有函数内的变量都会被开始声明
13. 创建表达式的时候 如果不需要给构造函数传入参数 括号是可以省略的
14.
2+null //结果为2 null化为0
2+undefined //结果为NaN undefined化为NaN运算
true+true //结果为2
1+2+"aaa" //结果为"3aaa"
15. 对象的比较是引用的比较
16. ===运算符: 恒等于 两个null NaN undefined 都不等
17. 当遇到数字和字符串时 + 偏向于字符串 而< >比较字符串偏向于数字
1+"1" //11
11<"3" //false "3"会转化为3
18. a op= b与 a= a op b 只有在a中包含副作用时才会不相等
data[i++] *= 2;
data[i++] = data[i++] *2; //二者不相等
19. delete数组属性或者元素时 相当于给数组留了一个undefined的洞,数组本身长度是不会变的。 delete不能删除通过var申明的变量。 delete可以删除不存在的属性 返回true
20. eval和with不推荐使用 eval全局
21. 继承不会修该原型 而且继承属性不会被删除 删除继承属性时 返回值任然是true
22.