Đoạn mã sau đây là một thử nghiệm để xem điều gì xảy ra khi một hàm và một biến có cùng tên trong cùng một phạm vi. Trong Chrome, có vẻ như định nghĩa biến được ưu tiên trong tham chiếu.Chức năng và biến có cùng tên
- Chức năng được đặt tên có thể được thực hiện hoặc bị che khuất hoàn toàn bởi tuyên bố biến không?
- Đây có phải là hành vi tiêu chuẩn trong Javascript mà các biến được ưu tiên hơn các hàm có cùng tên không?
Xin lỗi câu hỏi hai phần, nhưng có vẻ như lãng phí khi đặt hai câu hỏi riêng biệt.
Code:
<!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>
Tôi đoán rằng Javascript Tời chức năng để phía trên, làm cho định nghĩa biến xảy ra sau khi định nghĩa hàm. Do đó định nghĩa cuối cùng - biến - là biến được sử dụng. –