变量、作用域

        开始之前,先明确几个易混淆点:

1.js引擎在读取js代码的时候,会执行两个步骤,①解释②执行;

2.解释就是通篇扫描所有的js代码,把所有声明提到顶端,执行就是操作一类的。;

3.变量提升:函数声明和变量声明总是会被解释器悄悄的提升到方法体的最顶端;

4.函数提升在变量提升之上。

开始:

1.ES(ECMAScript)变量可能包含两种不同类型的值:基本类型值+引用类型值;

2.基本类型值:简单的数据段;引用类型值:可能由多个值构成的对象;

3.引用类型的值是保存在内存中的对象,引用类型的值是按引用来访问的。

娓娓道来:

1.若一个变量向另一个变量复制基本类型的值,会在变量上创建一个新值,然后把该值复制到为新变量分配的位置上(复制基本类型值);

2.若一个变量向另一个变量复制引用类型的值时,也会将存储在变量对象中的值复制一份放在新变量分配的位置上,但是:这个值的副本其实只是一个指针,而指针指向存储在堆中的一个对象,复制操作结束后,两个变量实际上引用的是同一个对象;故改变一个变量,另外一个变量也会受影响。

其他:

1.js没有块级作用域;

2.作用域:对某个范围产生作用,而不会对外产生任何影响的封闭空间。在这个空间中,外部不能访问内部变量,但是内部变量可以访问外部变量。

猜你喜欢

转载自www.cnblogs.com/zhengyeye/p/8948066.html