1. var a = b = 123; 等价于var a = 123; b = 123;
注意在这行代码中产生了全局变量b(之前未声明b的情况下)
2. for(var i = 0; i < jsArray.length; i ++){}
在这个循环中,
每次循环都会访问jsArray对象的length属性,
所以降低了代码的效率,
尤其是在jsArray还是dom对象的时候,
提前把length保存到一个变量中。
3. for...in...循环中,遍历的顺序不能保证!
而且只能遍历可序列话的变量。
4. hasOwnProperty(p)
用来判断p是不是一个对象的私有属性,而不是原型中的属性。
5. parseInt(x, y):y是按按进制来转换数字。
6. function x(){}//
x.name -> "x"
var x = function(){}//
x.name -> ""
var x = function y(){}//
x.name -> "y"
7. lvalue:在JS中能出现在赋值号左侧的值。
8. delete操作只能作用在lvalue上,如delete 1; 返回true但没有任何操作发生。只删除自由属性,
不会删除继承来的属性。
9. for(var x in "abc"){console.log(x)}//
该循环输出1, 2, 3。
10. for(a[i++] in object)//把object的属性复制到a数组。
11. break后面加statement label,用于跳出不是最近的循环或switch。
12. catch(e){},e的作用域只是在catch中。
13. try中有break,continue,return时,
在跳出前会执行finally块!
14. debugger可以在代码中出发断点。
15. 对象的键值可以是空:x[""] = 123;
16. {}构建对象时,末尾的,会忽略,IE除外,会报错。
17. ES3中若对象的属性名是保留字,只能用[]来取不能用.。
18. [, ,]末尾的,是忽略的,所以该数组长度是2。
19. a[-123] = 123;等价于a["-123"] = 123;
a["100"] = 123;等价于a[100] = 123;
a[1.00] = 123;等价于a[1] = 123;
20. JS数组没有超出界限的错误。