以下代碼片段是一個測試,以查看當函數和變量在同一範圍內共享相同名稱時會發生什麼。在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功能吊到頂部,使得變量定義發生。因此最後一個定義 - 變量 - 就是使用的定義。 – 2013-02-24 22:55:13