ใน JavaScript Single Quote (') และ Double Quote (") ทำงานเหมือนกันทุกประการ สำหรับ String Literal เลือกอย่างใดอย่างหนึ่งและใช้สม่ำเสมอ (Consistency)
ตัวอย่างจากบทความ
"Let us say: \"Life's good!\"" 'Let us say: "Life\'s good!"' "Let us say: \"Life\'s good!\"" 'Let us say: \"Life\'s good!"' // ES6 Template Literals (Backtick) `Will you be "my" friend. I really liked it when I was a kid,.`;
ไม่มีความแตกต่างด้าน Performance หรือ Functionality
typeof 'hello'; // "string" typeof "hello"; // "string" 'hello' === "hello"; // true
แนวทางปฏิบัติ (Style Guides)
| Style Guide | แนะนำ | เหตุผล |
|---|---|---|
| Airbnb | Single Quote (') | Consistent, ใช้ใน JS community มาก | Single Quote (') | เหมือนกัน |
| StandardJS | Single Quote (') | No semicolon, single quote |
| Prettier (default) | Single Quote (') | Configurable |
| TypeScript Default | Single Quote (') | tsconfig: "quoteStyle": "single" |
เมื่อไหร่ควรใช้ Double Quote
- String ที่มี Single Quote เยอะ (HTML attributes, contractions)
- JSON (ต้องใช้ Double Quote เท่านั้น)
- Team convention ใช้ Double
// HTML attributes - ใช้ double quote นอก แล้ว single ใน JS const html = 'Content'; // JSON - ต้อง double quote const json = '{"name": "John", "age": 30}'; // Contractions - ใช้ double quote ครอบ const msg = "It's a beautiful day"; // ไม่ต้อง escape
Template Literals (Backticks ``) - ES6
// Multi-line const html = ``; // Interpolation const name = 'John'; const greeting = `Hello, ${name}!`; // Expression const price = 100; const total = `Total: ${price * 1.07} Baht`; // Tagged Template function tag(strings, ...values) { return strings.reduce((acc, str, i) => acc + str + (values[i] || ''), ''); } tag`Hello ${name}!`; // "Hello John!"Hello
Escape Sequences
| Sequence | Meaning |
|---|---|
\' | Single quote |
\" | Double quote |
\\ | Backslash |
\n | Newline |
\t | Tab |
\r | Carriage return |
\b | Backspace |
\f | Form feed |
\uXXXX | Unicode (4 hex digits) |
\u{XXXXX} | Unicode (ES6, variable length) |
สรุป
เลือกอย่างใดอย่างหนึ่งและใช้สม่ำเสมอ
Single Quote (') เป็นมาตรฐานใน JS community ส่วนใหญ่
ใช้ Template Literals (``) สำหรับ Multi-line, Interpolation, HTML templates