2012-10-08 37 views
8

thể trùng lặp:
JavaScript Function Syntax Explanation: function object.myFunction(){..}Thời hạn trong định nghĩa Javascript function (chức năng window.onload() {})

Tôi đã nhìn thấy một số (di sản) mã javascript gần đây trông giống như :

function window.onload(){ 
    // some code 
} 

Điều này không giống như javascript hợp lệ với tôi vì bạn không thể có khoảng thời gian trong ide ntifier, nhưng nó có vẻ làm việc trong IE8. Tôi cho rằng đó là tương đương với:

window.onload = function(){} 

tôi đã cố gắng cùng mã trong Chrome và IE9 và cả trong số họ nâng cao ngoại lệ cú pháp, vì vậy là thích hợp trong suy nghĩ rằng điều này "tính năng" của IE8 là một số phi định nghĩa hàm tiêu chuẩn cần được thay thế? Mã trong câu hỏi chỉ được gửi đến trình duyệt IE, vì vậy đó có thể là lý do tại sao tôi chưa gặp sự cố này trước đây.

+7

IE8 đầy những kỳ quan bất ngờ ... –

+1

Haha, wow, thật khủng khiếp. – Ryan

Trả lời

2

Đối với Javascript trên trình duyệt gần đây, bạn thường có thể tham khảo ECMAScript và rõ ràng, điều này không được phép trong ECMAScript:

ECMAScript spec on function definition:

Việc sản xuất FunctionDeclaration: chức năng Identifier ( FormalParameterListopt) { FunctionBody} [...]

Tạo thuộc tính của đối tượng biến hiện tại (như được chỉ định trong 10.1.3) với tên Id entifier

SO on valid names (chỉ trong trường hợp ai đó sẽ nghĩ "window.onload" là tên của hàm, mà do đó sẽ window.window.onload)

+0

Cảm ơn! Tôi muốn có ý kiến ​​thứ hai trước khi đưa nó lên cho nhà phát triển ban đầu. – nemec

+0

Tôi hy vọng thực tế rằng cách thức xác định các chức năng của mình không tương thích với IE9, Chrome, Safari, Firefox hoặc Opera sẽ đủ thuyết phục anh ta, ngay cả khi không có liên kết đến các tiêu chuẩn. –

+0

Vâng mã này chỉ được thực hiện trong IE và nó trước IE9 vì vậy tôi chỉ ngạc nhiên vừa phải rằng nó đã bị bỏ qua. – nemec

0

Bạn có thể xác định chức năng mới sử dụng cú pháp sau:

function myFunc(args) 
{ 
    ... 
} 

Chức năng window.onload được xác định bởi trình duyệt và có thể là null. Khoảng thời gian có nghĩa là giá trị onload là một thành viên của đối tượng window. Cú pháp sau đây sẽ có một chức năng và gán nó vào giá trị của onload thành viên:

window.onload = function() 
{ 
    ... 
}; 

Đừng quên dấu chấm phẩy đuôi, vì đây là một câu lệnh gán.

+1

Bạn có thể cần xem xét một câu hỏi khác. OP hỏi về cú pháp này, không hợp lệ, nhưng hoạt động trong IE8: 'function window.onload() {' –

+0

Phải, bạn không nên làm điều đó cho các thành viên đã được khai báo. –

+0

Nó không thực sự có bất cứ điều gì để làm với các thành viên khai báo/undeclared. Cú pháp hàm được sử dụng là JavaScript không hợp lệ. Nó cung cấp cho một * Cú pháp * bởi vì '.' trong tên. Nhưng bằng cách nào đó nó hoạt động trong IE. –

Các vấn đề liên quan