全局变量和局部变量

前言:大家好我是阿飞。搞清楚变量的作用域至关重要哦。否则会被坑死的。好消息是这个不难,很容易理解掌握。

变量的作用域

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

原文地址:https://www.cnblogs.com/anduyinglufei/p/7442259.html