Posted by akasuna on 2011年03月21日 at 2:55 PM

我们都知道 JavaScript 中的 var 关键字是用来申明变量的,但是如果不用这个关键字而直接写出变量名,然后赋值给它,JavaScript 也并不会报错,它会自动申明这个变量。

难道说 JavaScript 中的 var 是个多余的东西吗?显然不是!

请看下面这段代码:

str1 = 'Hello JavaScript!';
function fun1() {
	str1 = 'Hello Java!';
}
fun1();
alert(str1);

// 弹出 Hello Java!

可以看到,在函数 fun1 被调用后,str1 的值在函数内被改变了。

再将上面的代码稍作修改:

str1 = 'Hello JavaScript!';
function fun1() {
	var str1 = 'Hello Java!';
}
fun1();
alert(str1);

// 弹出 Hello JavaScript!

看到没有,str1 的值并没有被函数 fun1 改变。

显然,var 关键字影响了变量的作用域。

函数外部:变量不管是否用了 var 申明,都是全局变量。

函数内部:变量如果没有使用 var 关键字申明,那它就是全局变量,只有用 var 关键字申明了,才是局部变量。

结论

为了避免潜在的风险,务必使用 var 关键字来申明变量。

4 个评论

  • China Windows Internet Explorer 2011年03月23日 11:46 AM

    留下个脚印,欢迎回访www.jiaquan.info

  • China Windows Google Chrome 2011年05月06日 8:56 AM

    用了 var就会受到函数作用域,如果不用var 将使用 window[var name] 变量

  • China Windows Google Chrome 2011年07月04日 7:35 PM

    其实就是在函数作用域里,添加var就是局部变量,否则就为全局(global)变量。

  • China Windows Internet Explorer 2011年08月25日 5:53 PM

    就是控制变量是局部还是全局 :-P

添加评论

:mrgreen: :-P :-D :-) ;-) :-o :-| :-( 8-O :-? 8-) :twisted: :evil: :oops: :roll: :cry: :lol: :-x more »