一、变量的作用域:
变量起作用的范围,变量在啥地方能用。那么啥地方就是它的作用域。
二、变量作用域分为:局部变量和全局变量。
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>