JS函数中变量加不加var有什么区别?

在定义变量时要使用 var 操作符(var 是一个关键字),后跟变量名(即一个标识符),如下所示:

  1. var message;

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

  1. function test(){
  2.  var message = “hi”// 局部变量
  3. }
  4. test();
  5. alert(message); // 报错

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

  1. function test(){
  2.  message = “hi”// 全局变量
  3. }
  4. test();
  5. alert(message); // “hi” 

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

最后

加与不加的区别就在于,加的话定义的就是局部变量,在函数结束后变量会被销毁,不加的话就是全局变量,在函数结束后变量不会被销毁,但是不推荐这样去定义全局变量。

虽然省略 var 操作符可以定义全局变量,但是在局部作用域中定义的全局变量很难维护,而且如果有意地忽略了 var 操作符,也会由于相应变量不会马上就有定义而导致不必要的混乱。

给未经声明的变量赋值在严格模式下会导致抛出 ReferenceError 错误。

 

完。