变量作用域

原创 2016年10月23日 09:16:11
<!DOCTYPE html>
<html>
<head>
	<title>变量作用域</title>
	<meta charset="utf-8">
</head>
<body>
	<script type="text/javascript">
		//1.js变量作用域,内部环境可以使用外部环境的变量和函数,但是外部外部环境不能引用任何内部的变量和函数。
		 var n=111;
     function f1(){
         console.log(n);
     }
     f1(); //111

		function f2(){
		 	var g=222;
		 }
		//2.函数没有调用时候,声明的变量还没有初始化
		// console.log(g);//Uncaught ReferenceError: g is not defined
		f2();
		//console.log(g); //error //函数外部无法读取函数内的局部变量。
		
		 //3.函数内部声明变量的时候一定要有var 否则的话就是就定义了全局变量
		 function f3(){
		 	h=333;
		 }
		 //console.log(h);//Uncaught ReferenceError: g is not defined
		 f3();
		 console.log(h);//333
		//阮一峰的理解 闭包就是能够读取其他函数内部变量的函数。
		//种种原因,我们有时候需要得到函数内的局部变量。但是,前面已经说过了,正常情况下,这是办不到的,只有通过变通方法才能实现。那就是在函数的内部,再定义一个函数,然后返回此函数。
		function f4(){
      var p=999;
      function f5(){
       console.log(p); // 999
        }
				return f5;
      }
		alert(f4());//打印f5函数 function f5(){console.log(p); //999 }
		alert(f4);//打印整个f4 function f4(){var p=999;function f5(){console.log(p); // 999}return f5;}
		//alert(p);//Uncaught ReferenceError: p is not defined
		
		//一般我们这样调用
		// var result=f4();
		// result();
		//在上面的代码中,函数f5就被包括在函数f4内部,这时f4内部的所有局部变量,对f5都是可见的。但是反过来就不行,f5内部的局部变量,对f4就是不可见的。这就是Javascript语言特有的"链式作用域"结构(chain scope),子对象会一级一级地向上寻找所有父对象的变量。所以,父对象的所有变量,对子对象都是可见的,反之则不成立。 只要把f5作为返回值,就可以在f4外部使用了。
		//思考 闭包一定要返回函数
	</script>
</body>
</html>

相关文章推荐

变量作用域

  • 2015年10月15日 10:48
  • 460B
  • 下载

perl变量作用域以及定义方式。

问:Perl中以my开头的语句,my是什么作用? 答(一): 像C语言中有作用域的概念,比如一个在函数中定义的变量,在函数外是无效的。 perl也有作用域的概念,perl定义的变量默认是全局的...

javascript变量作用域

  • 2013年07月25日 20:48
  • 18KB
  • 下载

js变量作用域

  • 2012年08月28日 11:49
  • 44KB
  • 下载

php函数,static,global关键字及三种变量作用域

函数和js函数类似,关注php与其他语言不用的地方 函数的形参默认值形式:function f($a,$b=3,$vc = "abc"){} 注意:没有给默认值的形参必须传递值, 形参的传值问题一句话...
  • ydxlt
  • ydxlt
  • 2016年01月25日 16:48
  • 2775

深入理解变量作用域

  • 2012年08月22日 11:42
  • 1KB
  • 下载

理解JavaScript变量作用域.pdf

  • 2011年05月01日 10:08
  • 1.21MB
  • 下载

js变量作用域var的区别

“JavaScript对变量作用域的规定是: - 变量在全局声明,或者在代码的任何位置隐士声明(不用var),则该变量在全局可见 - 变量在函数内显示申明(使用var),则在该函数内可见” ...

Ruby 的变量(作用域)

在讲解变量之前首先我们要明白什么是作用域? 简单的理解就是作用域是寄居在一定的区域类,相当于一个寄居场所。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:变量作用域
举报原因:
原因补充:

(最多只允许输入30个字)