Javascript变量同时声明时,需要注意的问题(面试常出题).

吴统威 on 编程语言 HTML/CSS/JAVASCRIPT | 2015-12-20 11:41:34.0

在javascript实际项目中,我们很可能会在变量声明上犯错误,而且自己可能还不知道,自己犯了错误.这是一个很危险的问题.当然这也是面试工作时,主考官常出的试题.


在javascript中最简单的变量声明方式就是

Javascript

 var a = 20;


这个没有任何问题的.我们再来看下面的声明.

Javascript

 var a = 10 ,b = 10 ,c = 10;
 console.log(a,b,c) // 10,10,10


我们将这个申明放入到一个函数里面,当做局部变量

Javascript

function fn(){
   var a = 10, b = 10, c = 10;
}
console.log(typeof a) // undefined
console.log(typeof b) // undefined
console.log(typeof c) // undefined


其实结果没什么疑问的,因为都是fn里的局部变量嘛!


如果我们这么来声明呢?

Javascript

function fn(){
   var  a = b = c = 10;
}
console.log(typeof a) //undefined
console.log(typeof b) //number
console.log(typeof c) //number


为什么会出现这种情况呢? 明明是局部变量,b和c变成了全局变量,如果您有这样的疑问,那说明对javascript的变量的申明可能还没弄明白.


var a = b = c = 10 等价于 var a = ( b = (c = 10 ) ); fn 函数相当于就是

Javascript

function fn(){
   c = 10;
   b = c;
   var a = b;
}


只有a被声明了,b和c都解析为全局变量.所以我们的结果就是undefined,number,number.

因此我们在做声明的时候,最好是分开声明,以免出现类似的情况.而且分开声明,可读性也强.


附上:变量的同时声明:

语法,注意逗号

Javascript

var varname1 [= value1 [, varname2 [, varname3 ... [, varnameN]]]];