在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]]]];