《JavaScript高级程序设计 第3版》-学习笔记-2

P31-P82页

1、相等不相等与全等不全等

相等不相等:先转换后比较。对于只有一个对象,调用valueOf方法得到基本类型值再按基本类型转换;如果两个都是对象,则比较他们是否是同一个对象(引用或指针值比较);null与undefined是相等的,至少有一个为NaN则相等为false,不相等为true;

全等不全等:只比较。只在两个操作数未经转换就相等的情况下返回true,特别的,null与undefined不全等,因为连类型都不同

2、未指定返回值类型的函数返回的是一个特殊的值-undefined

3、只能给引用类型动态的添加属性

1 obj = new Object();
2 obj.name = "lisimi";/*动态添加name属性*/

4、复制变量和传递参数都是值复制、值传递,对于基本数据类型,复制或传递是将值的副本放到新的变量里,对于引用数据类型,其实也是值传递,不过这个值比较特殊,是一个引用值(或者说指针),引用指向的对象并没有参与复制,也就是说最后两个引用变量指向同一个对象

5、每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中。执行环境有很多种,有全局环境、函数环境、with环境等等,这些环境的变量对象一起构成了作用域链。作用域越小,对应的变量对象在链上越靠前,作用域越大,变量对象在链上越靠后,全局执行环境的变量对象始终都是作用域链中最后一个对象

6、没有块级作用域,不声明直接使用则被当做全局变量(最好不要这么写)。

7、目前的JavaScript垃圾回收机制多采用标记清除的方式

原文地址:https://www.cnblogs.com/lvyahui/p/4324520.html