【发布时间】:2013-02-24 22:52:13
【问题描述】:
下面的代码-sn-p 是一个测试,看看当一个函数和一个变量在同一个作用域内共享同一个名字时会发生什么。在 Chrome 中,变量定义似乎具有参考优先级。
- 可以执行命名函数,还是完全被变量声明所掩盖?
- 变量优先于同名函数是 Javascript 的标准行为吗?
很抱歉这两个部分的问题,但提出两个单独的问题似乎很浪费。
代码:
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
var overlapping = function() { return 'this is a var holding an anonymous function' };
function overlapping()
{
return 'this is a function definition';
}
output( overlapping, 'overlapping' );
output( overlapping(), 'overlapping()' );
function output( expression, description )
{
document.writeln( '<li>' + ( description ? ('<i>' + description + '</i>: ') : '' ) + expression + '</li>' );
}
</script>
</body>
</html>
【问题讨论】:
-
我猜 Javascript 将函数提升到顶部,使变量定义发生在函数定义之后。因此最后一个定义——变量——是使用的。
标签: javascript syntax