Js 1.0 --Var的作用
js中经常会声明变量。
<!--V1.0-->
<script>
myVar = 'xcy';
console.log(myVar);
console.log(window.myVar);
console.log(window['myVar']);
console.log(this.myVar);
</script>
这四个结果是一样的,都是全局变量的值。
<!--V1.1-->
<script>
myVar = 1; //全局变量
function test() {
var myVar;
console.log(window.myVar); //结果为1, window下是全局对象
myVar = 2; //函数里,用var声明的局部变量
console.log(myVar); //结果为2
}
test();
console.log(myVar); //结果为1
</script>
可见有没有var在变量前声明是很重要的,以后一定要注意,在方法内部一定要加var,可以减少不必要的麻烦。
<!--V1.2-->
<script>
myVar = 1; //全局变量
function test(){
//var myVar; 尽管未声明,后声明都会被当作已声明 自动悬置在顶部声明,但不定义变量值。 这种行为称为 hoisting(悬置/置顶解析/预解析)
console.log(myVar); // undefined
var myVar = 2; //局部变量
console.log(myVar); // myVar = 2;
}
test();
</script>
第一个是”undefined”是因为myVar被当做了函数的局部变量(尽管是之后声明的),所有的变量声明当作被悬置到函数的顶部了。因此,为了避免这种混乱,最好是预先声明你想使用的全部变量。
PS:对于声明变量,不要用链式赋值,var a = b =0; 这样的结果其实是 var a = (b=0),结果是a为局部变量, b为全局变量。
推荐使用链分配式赋值,var a = 0, b = 0;

浙公网安备 33010602011771号