javascript,函数嵌套如何调用上一级函数的同名属性

fun的a属性怎么调用?

<script type="text/javascript">
			
			function fun(){
				var a=1;
				function fun2(){
					var a=2;
					console.log();	
					
				}
				fun2();
				
			}
			function sayHello(){
  				console.log(arguments[0], arguments[1], arguments[2]);
			}
			sayHello('Bob', 'Jack', 'Rose');// Bob Jack Rose
			
			
		</script>

 

不能。因为外层作用域的同名变量名会被 覆盖(shadowed variable) 。你需要换一个名字。

 

在内层函数引用外层函数的变量的值的需求是常有的事,外层作用域的同名变量名会被 覆盖(shadowed variable) 是肯定会发生的事,常用的解决方案是使用函数的参数来传递数据。

在Javascipt的最新的标准中,子类对父类的继承时,引用父类的属性或者是调用父类的方法时,使用super这个关键字。这个方法的注意事项是浏览器的支持情况是有限制的,要了解浏览器的产品与版本。IE目前是不支持super的。我个人的看法尽量不使用这样的新的语法特性。因为不利于浏览器的兼容性。

定义一个全局变量