次のコードスニペットは、関数と変数が同じスコープ内で同じ名前を共有している場合に何が起こるかを確認するためのテストです。Chromeでは、変数定義が参照で優先されているように見えます。
- 名前付き関数を実行できますか、それとも変数宣言によって完全に隠されていますか?
- 変数が同じ名前の関数よりも優先されるのは、Javascriptの標準的な動作ですか?
2つの部分からなる質問で申し訳ありませんが、2つの別々の質問をするのは無駄に思えました。
コード:
<!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>