3.3 Javascript中的变量

变量

ECMAScript的变量是松散类型的,我的理解是在定义一个变量后,假如初始化成一个字符串,后面该变量是可以赋值为任何类型的值的。原文中有一句话耐人寻味:

每个变量仅仅是一个用于保存值的占位符

var test; //未初始化的变量保存了一个特殊的值(undefined)
var message = "test"; //定义一个变量,并赋值为字符串
message = 100; //将message变量赋值为整型,这种操作是有效的,但是不被推荐(至于原因,有清楚的大神可以留言科普一下)

使用var定义的变量会成为变量所在的作用域范围下的局部变量

function printMsg(msg){
    var out = "test: " + msg;
    console.log(out);
}
printMsg("abc");
console.log(out);
//这里的out变量通过var定义,所以out成了printMsg函数的局部变量,当运行printMsg函数时,会打印out的值,函数退出时,再打印out的值会报错:Uncaught ReferenceError: out is not defined

当我们去掉定义out变量时使用的var关键字,out变量会变成全局变量

function printMsg(msg){
    out = "test: " + msg;
    console.log(out);
}
printMsg("abc");
console.log(out);
//这里的out被定义成了全局变量,当运行printMsg函数时,会打印out的值,函数退出时,再打印out的值也会输出相应的值,但是这样会导致out会被无意修改,导致代码难以理解和维护,在严格模式下,这种隐式的声明为全局变量会报错:Uncaught ReferenceError: out is not defined
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值