Dấu phẩy là dấu phân cách so với dấu phẩy là dấu phân cách


13

Trong video này , người nói nói:

"Một số người bị nhầm lẫn về cách hoạt động của dấu phẩy. Họ nghĩ rằng họ nên phân cách hơn là dấu phân cách. Bây giờ bạn có thể nghĩ về chúng theo cách nào đó."

Tôi không hiểu sự khác biệt giữa dấu phân cách và dấu phân cách (nếu có). Hàm ý trong video là bây giờ (dấu phẩy đó là hợp lệ), người ta có thể nghĩ chúng là dấu phân cách, thay vì dấu phân cách ...

Btw ngôn ngữ trong câu hỏi là JavaScript. Theo hiểu biết của tôi, mã thông báo dấu phẩy có hai ý nghĩa:

  • như một toán tử (hiếm khi được sử dụng)
  • như một dấu phân cách (trong danh sách tham số và tham số, mảng và đối tượng bằng chữ, v.v.)

Tôi không chắc làm thế nào một dấu phân cách dấu phẩy phù hợp với ...


2
Vì sao vấn đề này?
jfriend00

7
@ jfriend00 Nếu có sự khác biệt giữa thuật ngữ phân cách và dấu phân cách, tôi muốn biết điều đó ... Tôi muốn biết nội dung:)
Šime Vidas

3
@ jfriend00 Xem video. Nếu những người IE không suy nghĩ hẹp hòi như bạn, có lẽ chúng ta sẽ không có một tính di động javascript khác ...
yannis

3
@ ImeVidas Câu hỏi hay. Diễn giả của BTW là Douglas Crockford, kiến ​​trúc sư JavaScript cao cấp tại Yahoo, được biết đến với việc phổ biến JSON và tác giả của JavaScript: The Good Parts . Thật tốt khi bạn chú ý đến chi tiết, đặc biệt là khi xem video Crockford, vì anh ấy hiếm khi lãng phí bất kỳ hơi thở nào cho những thứ không quan trọng.
yannis

1
@YannisRizos Yea, tôi biết Crockford. Anh ấy là một nhà giáo dục tuyệt vời. :)
Vidime Vidas

Câu trả lời:


15

Nếu bạn coi dấu phẩy là dấu phân cách, bạn sử dụng dấu phẩy giữa hai mục của chuỗi để phân tách chúng, nếu bạn coi đó là dấu phân cách, bạn đặt nó sau mỗi mục để chỉ ra nơi một mục kết thúc. Xem các ví dụ dưới đây:

Dấu phẩy như một dấu phân cách

var myCars = ["Saab", "Volvo", "BMW" ];

Dấu phẩy như một dấu phân cách

var myCars = ["Saab", "Volvo", "BMW", ];

Tôi nghĩ rằng video nói rằng bạn có thể nghĩ về dấu phẩy cả hai dấu phân cách và dấu phân cách vì cả hai ví dụ mảng ở trên đều hợp lệ. Mặt khác, trong Javascript, bạn chỉ có thể sử dụng dấu phẩy làm dấu phân cách trong danh sách tham số của hàm, ví dụ:

foo(a, b, c) // separator, OK

là hợp lệ trong khi

foo(a, b, c,) // delimiter, NOT OK!

không hợp lệ

BIÊN TẬP

Theo như tôi hiểu, theo trang wikipedia, dấu phân cách là trường hợp đặc biệt của dấu phân cách , cụ thể là phần được đặt giữa các vùng văn bản khác nhau có ranh giới cần được đánh dấu. Trong thực tế, trang wikipedia đặt tên các giá trị được phân tách bằng dấu phẩy làm ví dụ sử dụng các dấu phân cách. Vì vậy, nói chung, bạn có thể sử dụng các dấu phân cách theo các cách khác nhau: trước, sau, trên cả hai mặt của phần văn bản sẽ được đánh dấu.

Lý do tại sao tôi giải thích dấu phân cách là "điểm đánh dấu được đặt sau một mục" trong ngữ cảnh Javascript được thúc đẩy bởi ví dụ bằng chữ, đó là hợp lệ cho C, C ++ và Java (Tôi nghĩ rằng tôi đã thấy ít nhất một câu hỏi trên chồng tràn về chủ đề này).

Một ví dụ khác về cách sử dụng tương tự nhưng khác nhau của một ký tự là dấu chấm phẩy như một dấu phân cách câu lệnh (C, C ++, Java, Ada, ...) và như một dấu tách câu lệnh (Pascal). vì thế

if (a > 0)
    printf("Positive\n");
else
    printf("Non positive\n");

là mã C chính xác trong khi

IF a > 0 THEN
    WriteLn('Positive'); (* Syntax error here! *)
ELSE
    WriteLn('Non positive');

không có mã Pascal chính xác.

Có lẽ terminator sẽ là một thuật ngữ tốt hơn / ít mơ hồ hơn dấu phân cách ? Ví dụ, người ta có thể xây dựng câu trích dẫn như sau: "Một số người nhầm lẫn về cách hoạt động của dấu phẩy. Họ nghĩ rằng họ nên là người chấm dứt vật phẩm chứ không phải là dấu tách vật phẩm . Bây giờ (trong nhiều trường hợp) bạn có thể nghĩ về chúng theo cách nào."


Có, trong danh sách tham số, dấu phẩy phải được sử dụng làm dấu phân cách, trong khi đó, bằng chữ, mảng có thể được sử dụng làm dấu phân cách hoặc dấu phân cách. Hoặc theo thuật ngữ của giáo dân: Bạn có thể đặt dấu phẩy sau phần tử mảng cuối cùng, nhưng bạn không phải làm vậy.
Vidime Vidas

Mặc dù câu trả lời của bạn không giải thích được trích dẫn từ câu hỏi của tôi khá tốt, trang Wikipedia cho "Dấu phân cách" cung cấp các định nghĩa khác nhau. Theo bài báo đó, một dấu phân cách chỉ định ranh giới giữa các vùng. Vì vậy, ví dụ "dấu phẩy như dấu phân cách" từ câu hỏi của bạn ở trên sẽ được gọi là dấu phân cách trường dấu phẩy, trong khi ví dụ "dấu phẩy là dấu phân cách" không được thể hiện ở bất kỳ đâu trên trang Wiki đó.
Vidime Vidas

@ Šime Vidas - Wikipedia chỉ là một tài liệu tham khảo như mọi tài liệu tham khảo khác, nó không phải là tài liệu tham khảo duy nhất.
Michael Riley - AKA Gunny

@CapeCodGunny Vâng, tôi chỉ nêu ra rằng có những định nghĩa đối đầu. Tôi cũng muốn xem định nghĩa từ các tài liệu tham khảo khác.
Vidime Vidas

7

Một dấu phân cách sẽ được đặt giữa hai giá trị, tách chúng.

one,two,three

Một dấu phân cách sẽ phân định một trường - nó sẽ ở cả hai phía.

,one,two,three,

Khi thực hiện theo cách này, nó tạo ra rất ít sự khác biệt, miễn là người ta có thể trích xuất các trường riêng biệt ra.

Đây là một vấn đề hoàn toàn khác với việc sử dụng dấu phẩy trong ngôn ngữ lập trình như javascript. Đó là về phân định / tách các giá trị trong một chuỗi.


1
À đúng, điều này có ý nghĩa.
Vidime Vidas

Tôi không đồng ý với lời giải thích phân định của bạn. Dựa trên lời giải thích của bạn, nó sẽ là, một ,, hai ,, ba, bây giờ dấu phân cách nằm ở cả hai phía.
Michael Riley - AKA Gunny

1
@CapeCodGunny - Bạn đang hiểu sai. Ví dụ tôi đưa ra có dấu phẩy trước và sau mỗi giá trị. Dấu phẩy không ở đầu và cuối của chuỗi đóng vai trò là dấu phân cách kết thúc dấu phân cách bắt đầu.
Oded

@Oded Bài viết Wikipedia này cung cấp các định nghĩa khác nhau. Theo nó, ví dụ đầu tiên của bạn sẽ là một dấu phân cách trường, trong khi ví dụ thứ hai của bạn không được thể hiện trong bài viết đó.
Vidime Vidas

1
Lời cảnh báo! var myNumbers = ['one','two','three', ];(dấu phẩy ở cuối) sẽ cho chiều dài mảng là 3 nhưng vì dấu phẩy ở phía trước var myNumbers = [,'one','two','three'];cho độ dài là 4.
RBT
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.