JavaScript高级程序设计第4章(变量、作用域的问题)自己的理解

一、变量的复制

1、保存基本类型值的变量:

复制此变量,就是将保存的值复制给新变量。原来的变量和复制的新变量,以后对其进行操作互不影响。

2、保存引用类型值的变量:

复制此变量,就是将保存的能找到引用类型值的路径复制给新变量。原来的变量和复制的新变量,以后对其进行操作相互影响。

二、内存分为堆和栈两个部分。其中基本类型的值保存在栈中,引用类型的值保存在堆中。

变量是储存在内存中的栈中。

1、保存基本类型值的变量:

变量是储存在内存中的栈中并且基本类型的值也是储存在栈中,复制该变量,在栈上会开辟新的内存空间,存放复制的变量,并且这两个变量以后的操作互不影响。因为此变量保存的就是实际的基本类型的值。

2、保存引用类型值的变量:

引用类型的值是储存在内存中的堆中,同时此变量保存的并不是实际的引用类型的值,而是保存着能找到引用类型值的路径,在栈中复制变量,只是相当于把路径复制了,也就是两个变量都能通过相同路径找到同一引用类型,操作其中一个变量去改变引用类型的属性,也会影响另一个变量的相同属性。也就是说这两个变量的操作是相互影响的。

三、函数的参数是一个变量

在 ECMAScript中,所有函数的参数都是按值或按路径传递的。将函数外部变量放到函数里作为参数,实际上是将外部变量保存的值或者路径复制一份给函数的参数变量。

四、检测类型

typeof  是用来检测基本数据类型的。

instanceof  是用来检测引用数据类型的。

五、全局变量和局部变量

全局变量:定义在函数外部的变量,或者函数内部未用var声明的变量。任何地方都可以访问全局变量。

局部变量:定义在函数内部并用var声明的变量。只有在函数内部才可以访问此变量。

(作用域:变量起作用的区域。分为:全局作用域和局部作用域)

六、作用链

例:在函数内部访问变量a,会先在最近的作用域下寻找是否有用变量a,如果没找到,则会去上一级作用域下寻找用变量a,就这样一级一级的往上寻找,直到找到为止。

(注意:只找用var声明的变量a,无论变量a是否赋值或者没用var声明但已经赋值的变量a)

七、没有块级作用域

由“{}”括号封闭的代码称为代码块。js中,代码块中定义的变量可以在代码块内、外进行访问。在其他语言中,则只能在代码块内部进行访问。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值