欢迎光临
我会一直在努力

变量

ECMAScript的变量是松散类型的,所谓的松散类型就是可以用来保存任何类型的数据。换句话说,每个变量名仅仅是一个用于保存值的占位符而已。定义变量时要使用 var  操作符(var是一个关键字),后面跟变量名(标识符),如下所示:

var message = "hi";

在此,变量message中保存了一个字符串值“hi”。像这样初始化变量并不会把它标记为字符串类型。初始化的过程就是给变量赋一个值那么简单。因此,可以在修改变量值的同时修改它的类型,如下所示:

var message = "hi";
message = 100;     //有效,但是不推荐这种写法

在上边这个例子中,变量message一开始保存了一个字符串值“hi”,然后该值又被一个数字值100取代。虽然我不建议修改变量所保存的值的类型,但这种操作在ECMAScript中安全有效。

有一点必须注意,即用var操作符定义的变量将成为定义该变量的作用域中的局部变量。也就是说,如果在函数中使用var定义一个变量时,那么这个变量在函数退出后就会被销毁,例如:

function test(){
    var message = "hi";   //这是一个局部变量
}
test();
alert(message);//将会报错!

这里,变量message是在函数中使用var定义的。当函数被调用时,就会创建该变量并为其赋值。而在此之后,这个变量又会被立即销毁,因此在例子中的下一行代码会导致错误。不过,也可以像下面这样省略var操作符,从而创建一个全局变量:

function test(){
    message = "hi" //这里创建的是全局变量
}
test();
alert(message);  //"hi"

这个例子省略了var 操作符,因而message就成了全局变量。这样,只要调用过一次 test() 函数,这个变量就有了定义,就可以在函数外部的任何地方被访问到。

虽然省略VAR操作符可以定义全局变量,但我们不推荐这种做法。因为在局部作用域中定义的全局变量很难维护,而且如果有意的忽略了var操作符,也会由于相应的变量不会马上就有定义而导致不必要的混乱。给未声明的变量赋值在严格模式下会导致出现 ReferenceError错误。

可以使用一条语句定义多个变量,只要像下面这样把每个变量用逗号分隔开即可:

var message = "hi",
    found = false,
    age = 29;

这个例子定义并初始化了3个变量。同样由于ECMAScript是松散类型的,因而使用不同类型初始化变量的操作可以放在一条语句中来完成。虽然代码里的换行和变量缩进不是必须的,但是这样做可以提高代码的可读性。

在严格模式下,不能定义名为 eval 和 arguments 的变量,否则会导致语法错误。

赞(0) 打赏
未经允许不得转载:前端范 » 变量
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏