Javascript函数范围
Posted
技术标签:
【中文标题】Javascript函数范围【英文标题】:Javascript function scope 【发布时间】:2011-11-15 01:30:15 【问题描述】:为什么在下面的示例中,警报会打印 2? var a 对函数 n 未知...
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Test Doc</title>
<script type="text/javascript">
var a = 1;
function f()
var a = 2;
function n()
alert(a);
n();
f();
</script>
</head>
<body>
</body>
</html>
【问题讨论】:
"var a is unknown to function n..." 在 php 中就是这种情况。幸运的是 JavaScript 不是 PHP。 【参考方案1】:JavaScript 函数继承其父级的作用域。内部变量会影响同名的父作用域变量。
Further Reading.
【讨论】:
+1 定位和良好的链接。 @user443946,在该文档中搜索“嵌套函数和闭包”。【参考方案2】:a
被贴花为全局变量并赋值为 1。a
也在函数 f()
内声明并赋值为 2。函数 n()
在函数 f()
内声明并在分配给“内部”a
后调用。
所以当n
被调用时,标识符a
将从n
的范围内解析出来。作用域链上第一个具有a
属性的变量对象是f
中声明的变量对象,因此返回它的值。
【讨论】:
【参考方案3】:它会提醒“2”。
在此处测试您的 javascript 示例:jsfiddle.net
你的例子贴在这里:your javascript example
为什么 var a
不知道 n() ??
【讨论】:
以上是关于Javascript函数范围的主要内容,如果未能解决你的问题,请参考以下文章