javascript中的变量

来源:互联网 发布:从事大数据需要学什么 编辑:程序博客网 时间:2024/05/16 15:09

在javascript中,变量可以用来存放任何类型的值。

变量声明

在使用一个变量前,可以使用var来声明一个变量。这样被声明的变量会被自动添加到与它最接近的环境中。即,假如在全局环境中使用var声明一个变量,那么它就属于全局环境,是一个全局变量;假如在一个函数内部,使用var声明一个变量,那离它最近的环境固然是该函数对象,那么它就是一个局部变量。

如果一个变量在初始化时没有使用var声明,那它将被添加到全局环境中,将成为一个全局变量。

建议,都使用var来声明变量,以免造成不必要的错误。

还有一点需要注意的是,使用var声明的变量是永久性的,不能用delete运算符来删除它,否则将会引发错误。

变量的作用域

在全局环境中所定义的变量是全局变量;

在函数内部定义的变量是局部变量。

没有块级作用域

javascript没有块级作用域,在函数内部声明的变量,在整个函数中都是有定义的,但是在执行var语句之前,它不会被初始化,值始终为undefined。

建议将变量集中在函数开头进行声明。

作用域链

当代码在一个环境中执行时,会创建变量对象的一个作用域链。

作用域链的前端,始终是当前执行的代码所在环境的变量对象。而全局环境的变量对象始终是作用域链中的最后一个对象。

变量的解析是从从作用域的前端开始,然后逐级向上搜索,直到找到要搜索的变量为止。假如在全局环境中也没能搜索到该变量,则表明该变量尚未声明,通常会引发错误。

由上面可以看出,局部变量的优先级高于与它同名的全局变量

延长作用域链

with语句和try-catch语句中的catch块,可以在作用域的前端临时增加一个变量对象,该变量对象会在代码执行后被移除。

这样,当执行流进入语句时,作用域链就会被加长。

基本类型和引用类型

数值、布尔值、null和undefined属于基本类型;

函数、数组和对象属于引用类型值。

基本类型和引用类型的区别

  1. 值的存储。基本类型在内存中的固定大小的,变量存储的是基本类型的值;引用类型在内存中没有固定大小,变量存储的是对这个值的引用(指针或内存地址)。
  2. 动态的属性。由于基本类型的值是不能改变的,所以我们不能动态的为其添加属性和方法;对于引用类型,我们可以动态的为其添加、修改或删除属性和方法。
  3. 值的复制。基本类型的值的复制,是创建了一个值的副本,然后赋给新变量,两个变量是完全独立的,不会相互影响;而引用类型的复制,是复制了该变量的一个引用。复制结束后,两个变量是指向同一个对象的,所以改变其中一个变量,会影响到另一个变量。

检查类型

基本类型的变量,可以使用typeOf操作符来确定它是属于那个数据类型的。假如是引用类型,执行typeOf操作,将只会返回Object或function。不能确定它是哪个给定的引用类型。

instanceof()操作会告诉我们,传入的参数是属于什么类型的对象。如果对象是给定引用类型的实例,那么将返回true。

传递参数

在javascript中,函数的参数是按值传递的。函数的参数相当于局部变量。


0 0
原创粉丝点击