当前位置主页 > 资料库 > 前端教程 > javascript变量及变量作用域

javascript变量及变量作用域

2015-11-01

变量代表了系统的一个存储区域。所有的编程语言都提供了变量这个语言元素。变量用于存储数据,比如数值或字符串。变量有三个方面的特性:名称、类型以及变量的值。

JavaScript是一种动态语言,对于JavaScript而言,它没有变量类型。也就是说,在声明变量时不需要指定变量的类型,变量类型由赋值给变量的值所确定。JavaScript不能像Java和C++那样在声明变量的时候指定变量的数据类型。

typeof运算符

如果需要查看变量的类型,可以使用typeof运算符来查看。typeof的使用方法有两种,这两种方法是等价的。

typeof operand 
typeof (operand)                             
                            

在JavaScript中,常用的变量类型有:Number、String、Boolean、Array和Date。对于字符串类型,typeof返回string,数值类型的值返回number,布尔类型的值返回boolean,对象类型的值返回object,函数类型的值返回function。如果一个变量没有定义,那么typeof对这个变量操作的结果为undefined

null和undefined类型

NullUndefined也是JavaScript的数据类型。Null的取值为null,表示“没有值”。Null既不是0,也不是空字符串,而是JavaScript的一种对象类型。Null用于初始化变量,以避免产生错误,也用于清除变量的内容,从而释放于变量关联的内存空间。当把Null赋值给某个变量后,该变量就不再保存任何有效数据了。

对于一个已经声明但为赋初值的变量来说,它的值为undefined,如果在程序中直接使用这个值,会导致程序出错。对于这样的变量,可以使用typeof来判断其类型,typeof返回的值将是字符串undefined。如果声明变量后,把null赋值给这个变量,那么这个变量的值为null,在程序中使用这个变量时将不会导致运行时错误。

单词undefined不是JavaScript中的关键字,而是系统预定义的一个全局变量。nullundefined既有联系,又有一定的区别。当使用==运算符来判断这两个值是否相等的时候,得到的结果为相等。如果想区分判断nullundefined,应该使用测试一致性的运算符===

typeof(null);       //object
typeof(undefined);  //undefined;
null == undefined;  //true
null === undefined; //false                              
                            
变量的声明和变量的初始化

变量在使用之前必须声明,这不仅是JavaScript的要求,也是一个好的编程习惯。JavaScript声明变量有两种方式:使用关键字var显示声明变量和使用赋值语句隐式的声明变量。

在声明变量的同时,可以为变量指定一个值,这个过程称为变量的初始化。如果没有为变量赋初值,那么这个变量的值为undefined

变量声明语句的一般格式为:

var variable_name = value;  //声明变量的同时初始化变量
var variable_name;          //声明变量,但没有进行初始化
variable_name;              //在为变量赋值的同时声明变量                             
                            
变量的作用域

变量的作用域指的是变量的作用范围或使用范围。JavaScript有两种变量:全局变量和局部变量。全局变量在整个页面中都可以使用(要在变量声明之后);局部变量则只能在函数中使用,并且局部变量必须使用var关键字来声明。

声明一个局部变量:

function fn1(){
  var a = 10; //声明一个局部变量,该变量的作用域为fn1()函数
  alert(a);
}                              
                            

当在函数内部没有使用var来声明变量的时候,这个变量就会作为全局变量来声明。

function fn2(){
  b = 10; //声明一个全部变量,该变量可以在fn2()函数之后的所有地方使用
  alert(b);
}                               
                            

另外需要注意的是,同名局部变量会在作用域内覆盖同名的全局变量,使用时要特别注意。

Previous:
上一篇:JavaScript数据类型转换
Next:
下一篇:JavaScript简单对象的创建
返回顶部