代码有生命吗?答案是有。它也像我们一样,拥有自己的生命。变量有局部变量和全局变量,它们的生命长短不一样。不过它的生命都是从它被声明的时候开始的,不同的是局部变量
会在函数运行以后被删除,也就是死亡,而全局变量只有在页面关闭才会结束。它的生命周期明白了的话,我们就讲下变量的作用域,如下
for (var i = 0; i < 10; i++) {
var oneVal = i;
}
console.log(oneVal);
我们在学C#的时候是不是不能在循环体里面声明变量,但是,在js里是可以的。
如图一样输出了结果
注意:在循环体里面声明的变量是全局变量,网页里的脚本和函数都可以访问到全局变量,不注意声明了重复的变量的话,很容易相互干扰。如下这样是不行的
for (var i = 0; i < 10; i++) {
var oneVal = i;
}
for (var k = 0; k < 10; k++) {
var oneVal = i;
}
console.log(oneVal);
你以为是输出的是9,但是结果是10,所以我们要注意细节,别粗心大意得不偿失了。
在函数内部声明的变量是局部变量,所以只能在函数内部访问它,在函数外面就不行了。
如图
function varName1(oneVar) {
var twoVar = oneVar;
console.log(oneVar);
}
varName1(2333);
console.log(twoVar);
这样的话只有里面的变量输出了结果,而外面的显示了错误,所以要记住了函数内部声明的变量,外面是用不了的。不同的函数可以声明相同的局部变量,因为只有声明过该变量的函数才 能识别出该变量,当要函数运行完毕,局部变量就会被删除。
还有一点值得注意不要向未声明的变量分配值,如果你把值赋给尚未声明的变量,该变量将被自动作为window对象的一个属性,就有可能会覆盖它原来的属性。
如图
function varName1(oneVar) {
var twoVar = oneVar;
var alert=oneVar;
alert("123");
}
varName1(2333);
看吧,它就会说alert不是一个方法,所以我们尽量不要这样做。