Koma sebagai pemisah vs koma sebagai pembatas

13

Dalam video ini , pembicara mengatakan:

"Beberapa orang menjadi bingung tentang bagaimana koma bekerja. Mereka pikir mereka harus menjadi pembatas daripada pemisah. Sekarang kamu bisa memikirkan mereka juga."

Saya tidak mengerti perbedaan antara pembatas dan pemisah (jika ada). Implikasinya dalam video adalah bahwa sekarang (koma tertinggal itu valid), orang dapat menganggapnya sebagai pembatas, daripada pemisah ...

Btw bahasa yang dimaksud adalah JavaScript. Dari pemahaman saya, tanda koma memiliki dua arti:

  • sebagai operator (jarang digunakan)
  • sebagai pemisah (dalam daftar argumen dan parameter, array dan literal objek, dll.)

Saya tidak yakin bagaimana pembatas koma cocok dengan ini ...

Šime Vidas
sumber
2
Mengapa ini penting?
jfriend00
7
@ jfriend00 Jika ada perbedaan antara istilah pembatas dan pemisah, saya ingin mengetahuinya ... Saya suka mengetahui hal:)
Šime Vidas
3
@ jfriend00 Tonton videonya. Jika orang-orang IE tidak berpikir sesempit Anda, mungkin kita tidak akan memiliki javascript portabilitas snafu lain ...
yannis
3
@ ŠimeVidas Pertanyaan bagus. BTW pembicara adalah Douglas Crockford, arsitek senior JavaScript di Yahoo, yang dikenal karena mempopulerkan JSON dan penulis JavaScript: The Good Parts . Sebaiknya Anda memperhatikan detail, terutama ketika menonton video Crockford, karena ia jarang membuang-buang napas untuk hal-hal yang tidak penting.
yannis
1
@YannisRizos Ya, saya tahu Crockford. Dia seorang pendidik yang hebat. :)
Šime Vidas

Jawaban:

15

Jika Anda menganggap koma sebagai pemisah, Anda menggunakan koma antara dua item berurutan untuk memisahkannya, jika Anda menganggapnya sebagai pembatas, Anda menempatkannya setelah setiap item untuk menunjukkan di mana item berakhir. Lihat contoh di bawah ini:

Koma sebagai pemisah

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

Koma sebagai pembatas

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

Saya pikir video mengatakan bahwa Anda dapat menganggap koma sebagai pemisah dan pembatas karena kedua contoh array di atas adalah valid. Di sisi lain dalam Javascript Anda hanya dapat menggunakan koma sebagai pemisah dalam daftar parameter fungsi, misalnya

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

valid sedangkan

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

tidak valid.

EDIT

Sejauh yang saya mengerti, menurut halaman wikipedia pemisah adalah kasus khusus pembatas , yaitu pemisah yang ditempatkan di antara wilayah teks yang berbeda yang batas-batasnya perlu ditandai. Bahkan, nama halaman wikipedia memberikan nilai terpisah sebagai contoh penggunaan pembatas. Jadi, secara umum Anda dapat menggunakan pembatas dengan cara yang berbeda: sebelum, setelah, di kedua sisi bagian teks yang akan ditandai.

Alasan mengapa saya menafsirkan pembatas sebagai "penanda yang diletakkan setelah item" dalam konteks Javascript dimotivasi oleh contoh literal array, yang juga berlaku untuk C, C ++, dan Java (saya pikir saya telah melihat setidaknya satu pertanyaan tentang stack overflow mengenai topik ini).

Contoh lain dari penggunaan karakter yang serupa tetapi berbeda adalah bahwa titik koma sebagai pembatas pernyataan (C, C ++, Java, Ada, ...) dan sebagai pemisah pernyataan (Pascal). Karena itu

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

adalah kode C yang benar sedangkan

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

tidak ada kode Pascal yang benar.

Mungkin terminator akan menjadi istilah yang lebih baik / kurang ambigu daripada pembatas ? Misalnya seseorang dapat merumuskan kutipan sebagai berikut: "Beberapa orang menjadi bingung tentang bagaimana koma bekerja. Mereka berpikir mereka harus menjadi terminator barang daripada pemisah barang . Sekarang (dalam banyak kasus) Anda dapat memikirkan mereka juga."

Giorgio
sumber
Ya, dalam daftar parameter koma harus digunakan sebagai pemisah, sedangkan dalam literal array koma dapat digunakan sebagai pemisah atau pembatas. Atau dalam istilah awam: Anda dapat meletakkan koma setelah elemen array terakhir, tetapi Anda tidak harus melakukannya.
Šime Vidas
Meskipun jawaban Anda menjelaskan kutipan dari pertanyaan saya dengan cukup baik, halaman Wikipedia untuk "Pembatas" memberikan definisi yang berbeda. Menurut artikel itu, pembatas menentukan batas antar wilayah. Jadi, contoh "koma sebagai pemisah" dari pertanyaan Anda di atas akan disebut pembatas bidang koma, sedangkan contoh "koma sebagai pembatas" tidak diwakili di mana pun di halaman Wiki itu.
Šime Vidas
@ Šime Vidas - Wikipedia hanyalah sebuah referensi seperti referensi lainnya, ini bukan satu-satunya referensi.
Michael Riley - AKA Gunny
@CapeCodGunny Ya, saya hanya menunjukkan bahwa ada definisi yang bertentangan. Saya juga ingin melihat definisi dari referensi lain.
Šime Vidas
7

Pemisah akan diletakkan di antara dua nilai, memisahkannya.

one,two,three

Pembatas akan membatasi bidang - itu akan berada di kedua sisi.

,one,two,three,

Ketika diambil dengan cara ini, itu membuat sedikit perbedaan, selama seseorang dapat mengekstrak bidang yang terpisah.

Ini adalah masalah yang sama sekali berbeda dengan penggunaan koma dalam bahasa pemrograman seperti javascript. Ini adalah tentang membatasi / memisahkan nilai-nilai dalam sebuah string.

Oded
sumber
1
Ah ya, ini masuk akal.
Šime Vidas
Saya tidak setuju dengan penjelasan pembatas Anda. Berdasarkan penjelasan Anda, satu ,, dua ,, tiga, sekarang pembatas ada di kedua sisi.
Michael Riley - AKA Gunny
1
@CapeCodGunny - Anda salah menafsirkan. Contoh yang saya berikan memiliki koma sebelum dan sesudah setiap nilai. Koma yang tidak di bagian paling awal dan akhir dari string berfungsi sebagai pembatas akhir dan mulai pembatas.
Oded
@Oded Artikel Wikipedia ini memberikan definisi yang berbeda. Menurut itu, contoh pertama Anda akan menjadi pembatas bidang, sedangkan contoh kedua Anda tidak terwakili dalam artikel itu sama sekali.
Šime Vidas
1
Kata hati-hati! var myNumbers = ['one','two','three', ];(koma pada akhirnya) akan memberikan panjang array sebanyak 3 tetapi karena koma di depan var myNumbers = [,'one','two','three'];memberikan panjang sebagai 4.
RBT