P31-P82页
1、相等不相等与全等不全等
相等不相等:先转换后比较。对于只有一个对象,调用valueOf方法得到基本类型值再按基本类型转换;如果两个都是对象,则比较他们是否是同一个对象(引用或指针值比较);null与undefined是相等的,至少有一个为NaN则相等为false,不相等为true;
全等不全等:只比较。只在两个操作数未经转换就相等的情况下返回true,特别的,null与undefined不全等,因为连类型都不同
2、未指定返回值类型的函数返回的是一个特殊的值-undefined
3、只能给引用类型动态的添加属性
obj = new Object();
obj.name = "lisimi";/*动态添加name属性*/
4、复制变量和传递参数都是值复制、值传递,对于基本数据类型,复制或传递是将值的副本放到新的变量里,对于引用数据类型,其实也是值传递,不过这个值比较特殊,是一个引用值(或者说指针),引用指向的对象并没有参与复制,也就是说最后两个引用变量指向同一个对象
5、每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中。执行环境有很多种,有全局环境、函数环境、with环境等等,这些环境的变量对象一起构成了作用域链。作用域越小,对应的变量对象在链上越靠前,作用域越大,变量对象在链上越靠后,全局执行环境的变量对象始终都是作用域链中最后一个对象
6、没有块级作用域,不声明直接使用则被当做全局变量(最好不要这么写)。
7、目前的JavaScript垃圾回收机制多采用标记清除的方式