Mã như sau:
<body>
<a href="javascript:;" id="test">hello</a>
</body>
<script type="text/javascript">
document.getElementById("test").addEventListener("click", function () {
test()
}, false)
function test() {
var postTypes = new Array('hello', 'there')
(function() { alert('hello there') })()
}
</script>
Điều này sẽ tạo ra:
"Uncaught TypeError: object không phải là một hàm"
Nếu tôi bọc lệnh gọi / lệnh gọi hàm ẩn danh trong một tập hợp dấu ngoặc đơn khác, nó sẽ thực thi cảnh báo, nhưng vẫn báo cho tôi lỗi. Nếu tôi đặt dấu chấm phẩy sau định nghĩa "var postTypes" thì nó sẽ hoàn toàn ổn.
Tôi tin rằng javascript không yêu cầu dấu chấm phẩy, vì vậy tôi đoán rằng có một số quy tắc kết hợp kỳ lạ của ứng dụng hàm mà tôi không hiểu đầy đủ. Tại sao tôi gặp lỗi này?