基本类型和引用类型的值
基本类型是简单的数据段,可以操作保存在变量中的值。
引用类型是那些可能有多个值构成的对象,她的值是保存在内存中。
*只能给引用类型动态的添加属性
1.复制变量值的区别:
基本类型复制的只是一个副本,两个值虽然相同但是是完全独立的。互不影响
引用类型复制之后指向的是同一个对象。改变其中一个变量,就会影响另一个变量。
2.传递参数:
*访问变量有按值和按引用两种方式,而参数只能按值传递。
基本类型传递参数:
num是函数的局部变量,调用函数时,count作为参数被传递给了函数,10被复制给了参数num,在函数内部,参数num被加了10,但这不会影响函数外部的count变量。
引用类型传递参数:
即使在函数内部修改了参数的值,但原始的引用仍然保持未变。
加深理解
3.检测类型
*基本数据类型使用typeOf操作符。
*引用类型使用instanceof操作符。(是引用类型都会返回true,基本类型都返回false)
alert(person instanceof Object); //变量person是Object吗
alert(person instanceof Array); //变量person是Array吗
alert(person instanceof RegExp); //变量person是RegExp吗
执行环境与作用域
*内部环境可以通过作用域链访问所有的外部环境 。但是外部环境不能访问任何内部环境的变量和函数。(局部环境会开始在自己的变量对象中搜索变量名和函数名,如果搜索不到则搜索上一级作用域链)
延长作用域链
with语句
try-catch语句的catch块
没有块级作用域
js没有块级作用域。
if语句和for语句中创建的变量在循环和判断结束后,也依然会存在于外部的执行环境中。
1.声明变量
2.查询标识符:
实例比较(不断向外查找,一旦找到最近的就停止搜索)
垃圾收集
js具有自动垃圾收集机制。
原理:找出那些不再继续使用的变量,然后释放其占用的内存。
标记清除(最常用的垃圾收集方式)
引用计数(不太常见的)