js的变量作用域,局部变量,全局变量,全局和局部变量重名

一、变量的作用域:

  变量起作用的范围,变量在啥地方能用。那么啥地方就是它的作用域。


二、变量作用域分为:局部变量和全局变量。


1、局部变量:

//就是定义在函数内部的变量(内部变量),局部变量起作用的范围是函数内部。
//局部变量就是私有的变量

2、全局变量:

//就是定义在函数外部的变量(外部变量),
//全局变量起作用的范围是当前文件中的所有函数。
//全局变量就是所有函数共享的变量

三、代码示例

1、局部变量

function testf1(){
	var age = 100;//定义了一个局部变量age;age只能在函数testf1内部使用,其它函数不能使用
	console.log("testf1:age="+age);
	console.log("testf1:name="+name1);//出错:name1 is not defined;
}

function testf2(){
	var name1 = "张三疯";//定义了一个局部变量name1;name1只能在函数testf2内部使用,其它函数不能使用
	console.log("testf2:age="+age);//出错:
	console.log("testf2:name="+name1);
}

function testf(){
	console.log("testf:age="+age);//出错
	console.log("testf:name="+name1);//出错:
	testf1();
	//testf2();
}

2、全局变量

var age = 250;//定义一个全局变量age,赋值为250;

function testf(){
	testf1();
	testf2();
	console.log("testf:age="+age);//251
}

function testf1(){
	console.log("testf1:age="+age);	//250
}

function testf2(){
	age = 251;
	console.log("testf2:age="+age);//251
}

3、全局变量和局部变量重名:

就近原则:当前全局变量和局部变量重名时,在函数内部使用的是局部变量

var age=250;
function testf(){
	var age = 10;//声明,并赋值;
	console.log("testf:age="+age);//age是局部变量,因为testf函数内部定义了age。10;
	testf1();
}

function testf1(){
	console.log("testf1:age="+age);////age是全部变量,因为testf1函数内部没有定义age。250;
}



-----------------------------------测试代码----------------------------------


<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		
	</head>
	<body>
		<input type="button" value="  测试  " onclick ="testf()" />		
	</body>
</html>
<script type="text/javascript" src="js/tools.js"></script>
<script type="text/javascript">
//一、变量的作用域:变量起作用的范围,变量在啥地方能用。那么啥地方就是它的作用域。

//二、变量作用域分为:局部变量和全局变量。

//局部变量:
//就是定义在函数内部的变量(内部变量),局部变量起作用的范围是函数内部。
//局部变量就是私有的变量

//全局变量:
//就是定义在函数外部的变量(外部变量),
//全局变量起作用的范围是当前文件中的所有函数。
//全局变量就是所有函数共享的变量

//三、代码示例

//1、局部变量
/*
function testf1(){
	var age = 100;//定义了一个局部变量age;age只能在函数testf1内部使用,其它函数不能使用
	console.log("testf1:age="+age);
	console.log("testf1:name="+name1);//出错:name1 is not defined;
}

function testf2(){
	var name1 = "张三疯";//定义了一个局部变量name1;name1只能在函数testf2内部使用,其它函数不能使用
	console.log("testf2:age="+age);//出错:
	console.log("testf2:name="+name1);
}

function testf(){
	console.log("testf:age="+age);//出错
	console.log("testf:name="+name1);//出错:
	testf1();
	//testf2();
}

*/

//2、全局变量:
/*
var age = 250;//定义一个全局变量age,赋值为250;

function testf(){
	testf1();
	testf2();
	console.log("testf:age="+age);//251
}

function testf1(){
	console.log("testf1:age="+age);	//250
}

function testf2(){
	age = 251;
	console.log("testf2:age="+age);//251
}
*/


//3、全局变量和局部变量重名:
//就近原则:在函数内部使用的就是局部变量
var age=250;
function testf(){
	var age = 10;//声明,并赋值;
	console.log("testf:age="+age);//age是局部变量,因为testf函数内部定义了age。10;
	testf1();
}

function testf1(){
	console.log("testf1:age="+age);////age是全部变量,因为testf1函数内部没有定义age。250;
}

</script>

猜你喜欢

转载自blog.csdn.net/jiang7701037/article/details/80782477