前言:大家好我是阿飞。搞清楚变量的作用域至关重要哦。否则会被坑死的。好消息是这个不难,很容易理解掌握。
变量的作用域
1. 全局变量 定义在函数外部 (函数内部可以使用)
2. 局部变量 定义在函数内部 (函数外部不能使用)
3. 不加var 不管是函数内还是函数外部 都属于全局变量(强烈反对函数内使用不加var的全局变量!谁用谁sb~)另外严格模式'use strict'会报错。
4. 函数内添加形参可以使 全局变量转变局部变量
5. 优先使用局部变量 再使用全局
6. for while if 分支语句 都是全局变量!
全局变量
var index = 100; //全局变量
function demo(){
console.log(index);//由此可见函数内部可以获取到外部的index
}
demo();//打印100;
tips:在函数外部 定义变量时候即使不写var 也可以!
index = 100; //全局变量
function demo(){
console.log(index);//由此可见函数内部可以获取到外部的index
}
demo();//打印100;
局部变量
例1:
function show(){
var myindex = 1000; //局部变量
}
show();
console.log(myindex) //无法获取 报错!
例2:
function show(){
var myindex = 1000; //局部变量
console.log(myindex) //打印 1000
}
show();
全局变量污染
function demo1(){
index = 1000; //由于没有写var 此时函数内的index变全局变量
}
demo1();
console.log(index) //打印1000
tips:切记函数内的变量都需要加var!!!如果不写var则变成全局变量,虽然感觉挺方便,可以随便获取,但是这样会埋下坑,今后合作开发时候肯定会被人喷出翔来的。。。。
形参使全局变局部
function demo1(index){ //此刻形参的值=index
index = 1000; //所以此刻index变成了局部变量
}
demo1();
console.log(index) //外部无法获取 报错!
优先使用局部变量 再使用全局
例1:
var index = 100;
function demo(){
var index = 90;
console.log(index);
}
demo(); //优先使用局部变量 再使用全局
例2:
var myindex = 200;
function show(){
var myindex = 100;
return function(){
console.log(myindex);
}
}
show()();// 打印 100
//此时var myindex = 100; 相对于return的内部的函数是全局的
例3:
var myindex = 200;
function show(){
var myindex = 100;
return function(){
var myindex = 50;
console.log(myindex);
}
}
show()(); // 打印 50;
for while if 分支语句 都是全局变量!
for (var i = 1; i <= 1; i++) {
var index1 = "农妇三拳";
}
if (true) {
var index2 ="农夫三拳"
}
console.log(index1)//打印 农妇三拳
console.log(index2)//打印 农夫三拳
ok~差不多应该了解了吧。
最后让我们搞点事情,做些搞事情的练习题吧。亲_
点击下方链接即可
http://www.cnblogs.com/anduyinglufei/p/7442267.html