js-JavaScript高级程序设计学习笔记2
第四章 变量、作用域和内存问题
1、ES变量包含两种不同数据类型的值——基本类型值(5种基本数据类型)和引用类型值(保存在内存中的对象,所有引用类型值都是Object的实例)
2、只能给引用类型值动态地添加属性
3、复制基本类型值,两个变量互不影响;复制引用类型值,实际复制的是指针,引用同一个对象,修改时将互相影响
4、ES中所有函数的参数都是按值传递的,也就是说,把函数外部的值复制给函数内部的参数。
5、检测一个变量是不是基本数据类型,用typeof;
检测引用类型值时,用instanceof,如alert(colors instanceof Array);//变量colors是Array吗?
6、对JS来说,for语句初始化变量i后,变量存在于for所执行的环境中,因此for结束后,i依然存在于循环外部的执行环境中。
7、未声明的变量将作为全局变量,不推荐。在严格模式下,初始化未经声明的变量会导致错误。
8、标记清除是主流的垃圾收集算法。应及时解除不再使用的全局对象的引用。
第五章 引用类型
1、使用length属性可以为数组末尾添加新项,colors[colors.length]=“black”;
2、instanceof检测数组只能工作在一个全局执行环境中,多个全局环境时使用Array.isArray()。
3、concat()方法不传递参数的情况下,复制当前数组并返回副本。