2009-10-05 33 views
18

Các tài liệu của một số hàm API JavaScript cho thấy các đoạn sau đây là một ví dụ về làm thế nào để gọi một số chức năng:‘::’ (dấu hai chấm) làm gì trong JavaScript?

<button type="button" onClick="foo.DoIt(72930)">Click</button> 

<button type="button" onClick="foo.DoIt(42342::37438)">Click</button> 

:: rõ ràng được sử dụng ở đây để cho phép một hoặc hai đối số được truyền cho hàm.

:: làm gì trong JavaScript?

Và làm cách nào để chức năng biết nếu một hoặc hai giá trị được chuyển? Nó đọc chúng như thế nào?


Vào xem xét kỹ hơn, các ví dụ cho thấy những thứ kỳ lạ khác như

<button type="button" onClick="foo.Bar(72//893)">Click</button> 

<button type="button" onClick="foo.Qux(425;1,34::)">Click</button> 

Ít nhất // trông giống sai.

Vì vậy, tôi đoán nó không phải là một số cú pháp mới lạ mà tôi không biết, nhưng có lẽ các ví dụ chỉ là thiếu dấu ngoặc kép xung quanh một đối số chuỗi đơn.

+1

AFAIK, đó là một lỗi đánh máy. Dấu hai chấm trong sử dụng đó không có ý nghĩa gì cả. –

+0

bạn có thể cho chúng tôi biết thêm về API javascript bạn đang sử dụng không. – Xinus

+0

Liên kết với tài liệu đã nêu? –

Trả lời

13

Không có gì. Đó là lỗi cú pháp.

>>> alert(42342::37438) 
SyntaxError: missing) after argument list 
+3

Đúng, trừ khi vì một số lý do ungodly cho biết nhà phát triển thực sự phân tích cú pháp onclick giá trị thuộc tính với 'document.getElementsByTagName ('button') [0] .getAttribute ('onclick')' và giải nén thông tin đó, đó là một biểu thức ECMAScript không hợp lệ. –

+1

@Brann - Nó có vẻ không hợp lệ trong ngữ cảnh được đưa ra trong câu hỏi. – Quentin

+0

@Pawel - Không phải vậy. Xem bình luận trước của tôi. Xem bối cảnh của câu hỏi. – Quentin

2

Trong ví dụ nào bạn thấy? Cho đến nay, JavaScript không có một toán tử dấu hai chấm!

Dấu hai chấm thay thế bộ chọn một dấu hai chấm cho các phần tử giả trong CSS3 để tạo sự phân biệt rõ ràng giữa các lớp giả và các phần tử giả. Nhưng đó là CSS3, không phải JavaScript! Không có gì!

+0

Với điều này, có vẻ như anh ta đang nhìn vào một bộ chọn jquery và bỏ qua các dấu ngoặc kép xung quanh tham số. –

+0

có thể. trong mọi trường hợp, câu hỏi này thu hút sự chú ý nhiều hơn tôi nghĩ. –

1

Có lẽ đó là lỗi đánh máy, và toàn bộ điều được dự kiến ​​sẽ có trong dấu ngoặc kép.

7

:: không liên quan gì đến số lượng tham số. Bạn có thể làm điều đó bằng JavaScript với dấu phẩy thông thường:

function SomeFunction(param1, param2) { 
    //... 
} 

SomeFunction('oneParam'); // Perfectly legal 

Ngoài ra, dựa trên câu trả lời của Tzury Bar Yochay, bạn có chắc là bạn không nhìn vào thứ gì đó như sau?

$('this::is all one::parameter'); // jQuery selector 
+0

Tôi đoán bạn nói đúng và thiếu dấu ngoặc kép. Tôi sẽ gửi báo cáo lỗi cho tác giả :) – dtb

0

Tôi đoán rằng danh sách tham số cho foo.DoIt() được tạo bằng mã và một giá trị trống.

2

Nó phải là một lỗi đánh máy cho

<button type="button" onClick="foo.DoIt('72930')">Click</button> 

<button type="button" onClick="foo.DoIt('42342::37438')">Click</button> 
150

Đó là chắc chắn không phải là trường hợp tại thời điểm câu hỏi của bạn, nhưng ngay bây giờ :: là một nhà điều hành ES7 hợp lệ. Nó thực sự là một phím tắt cho ràng buộc.

::foo.bar 

tương đương với

foo.bar.bind(foo) 

Xem một lời giải thích here ví dụ:

+1

Nếu tôi đọc chính xác, thì nó không hợp lệ trong ngữ cảnh được đưa ra trong câu hỏi. LHS và RHS của '::' trong câu hỏi là Số. – Quentin

+24

Đây là câu trả lời tôi đang tìm kiếm khi tôi Googled cho những gì :: có nghĩa là mặc dù! Cảm ơn – poshaughnessy

+2

Câu trả lời này không liên quan gì đến câu hỏi này, bởi vì (1) ES7, được xuất bản vào tháng 6 năm 2016, không chứa toán tử '::'; (2) '::' toán tử chỉ là một đề xuất giai đoạn 0 hiện tại, có khả năng bị thay đổi hoặc bị loại bỏ cao; (3) Trong ngữ cảnh của câu hỏi, nó không phải là một cú pháp toán tử '::' hợp lệ và thậm chí cú pháp chính xác sẽ không hoạt động trong bất kỳ trình duyệt chính hiện tại nào. – rhgb

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