2010-06-30 76 views
122

Tôi biết rằng trong PHP, sự khác biệt duy nhất giữa dấu ngoặc kép và dấu nháy đơn là cách diễn giải biến trong chuỗi và cách xử lý ký tự thoát.Sự khác biệt giữa dấu nháy đơn và dấu ngoặc kép trong Javascript

Trong JavaScript, tôi thường thấy dấu ngoặc kép được sử dụng trong chuỗi. Có một lý do cụ thể cho điều đó, hoặc là dấu nháy đơn chính xác giống như dấu ngoặc kép?

+46

Các dấu nháy kép đòi hỏi bạn phải nhấn phím shift. Tiết kiệm năng lượng lớn để sử dụng dấu nháy đơn. :) – MatrixFrog

+3

@MatrixFrog Có rất nhiều bàn phím khác mà bạn phải bấm phím shift cho cả hai, ví dụ, ở Đức, Hungary, Áo, v.v. – totymedli

+2

Vâng, thực sự tôi cần phải bấm phím shift cho dấu nháy đơn, nhưng không phải để tăng gấp đôi báo giá (hầu hết các bàn phím Q của Thổ Nhĩ Kỳ). Và tôi lạm dụng điều này bằng cách sử dụng dấu ngoặc kép trong PHP và JavaScript ngoại trừ các dấu nháy đơn được yêu cầu/tốt hơn. –

Trả lời

129

Bạn sẽ muốn sử dụng dấu ngoặc đơn mà bạn muốn dấu ngoặc kép xuất hiện bên trong chuỗi (ví dụ: cho thuộc tính html) mà không cần phải thoát khỏi chúng hoặc ngược lại. Ngoài ra, không có sự khác biệt.

+0

Bạn có thể giải thích khi nào sử dụng dấu nháy kép n dấu nháy đơn. Có bất kỳ sự khác biệt nào giữa hai $ này ("[href $ = '. Jpg']"), $ ('[href $ = ". Jpg"]') – Anshu

+0

@Anshu, karim nói 'hoặc ngược lại' ...Vì vậy, anh ấy nói nó được sử dụng cho cả hai trường hợp như những gì bạn đã nói. –

+1

@Anshu 'var answer =" Không sao cả "; // trích dẫn đơn bên trong dấu ngoặc kép ' 'var answer =" Anh ấy được gọi là' Johnny '"; // dấu nháy đơn bên trong dấu ngoặc kép ' 'var answer =' Anh ấy được gọi là" Johnny "'; // dấu ngoặc kép bên trong dấu nháy đơn ' – broadband

36

Hoàn toàn không có sự khác biệt. QUOTING MIỄN PHÍ YEEHHAAA

+2

Đơn giản là ngắn gọn là mục tiêu lập trình +1 – Callat

8

Chúng giống nhau, tôi thường sử dụng dấu nháy đơn nhưng đó là vì tôi là một nhà phát triển .net và asp.net nói riêng để hỗ trợ tôi phân biệt giữa 2 loại chuỗi.

+2

tại sao một downvote? – Pharabus

+13

Có lẽ vì anh ghét ASP.Net -knuckle- –

50

Có sự khác biệt về JSON - Tiêu chuẩn JSON chỉ định rằng tất cả các cặp khóa, giá trị phải nằm trong dấu ngoặc kép. (nhờ wulfgarpro trong các bình luận), vì vậy tôi đã bắt đầu chuyển sang sử dụng dấu ngoặc kép càng nhiều càng tốt để tôi không mắc lỗi khi giao dịch với JSON.

+30

Cá nhân, tôi nghĩ tốt hơn là không nên cố đọc và tự viết JSON. Tôi luôn JSON.parse và JSON.stringify, để tôi tự do sử dụng dấu nháy đơn, dấu ngoặc kép hoặc thậm chí không có dấu ngoặc kép, mà không phải lo lắng về việc gây ra lỗi phân tích cú pháp ở nơi khác. – MatrixFrog

+5

Vui lòng giải thích sự khác biệt trong JSON? – staticboy

+15

@staticboy - Tiêu chuẩn JSON chỉ định rằng tất cả các cặp khóa, giá trị phải nằm trong dấu ngoặc kép. – wulfgarpro

-4

Tôi vừa tìm thấy sự khác biệt. Tôi đang tạo trang web trên điện thoại di động, nhưng tôi hầu hết đã thử nghiệm trên máy tính để bàn Firefox. Tính năng này hoạt động tốt trên Firefox:

var searchArray = searchValue.split(' '); // Split a string at the spaces. 

NHƯNG ... nó không hoạt động trên thiết bị di động Safari (iPhone 3GS chạy iOS 6.1). Để làm cho nó hoạt động trên Safari di động, bạn phải sử dụng dấu ngoặc kép:

var searchArray = searchValue.split(" "); // Split a string at the spaces. 

Nếu bạn không sử dụng dấu ngoặc kép, nó không chia, nó chỉ đặt toàn bộ chuỗi vào phần tử mảng đầu tiên. Đó là một điều khó hiểu thực sự đối với tôi và mất nhiều thời gian để tìm ra; Tôi không biết điều gì thậm chí khiến tôi cố gắng thay đổi dấu ngoặc kép, bởi vì tôi nghĩ rằng họ luôn phải hành động theo cùng một cách. Tôi đã không tìm thấy bất cứ điều gì về vấn đề này bằng cách googling, vì vậy có lẽ điều này sẽ giúp một ai đó.

+1

FYI: Tôi đã thử nghiệm trên iPhone 5/iOS 6.1 và không thấy vấn đề này. –

+2

Rất không thể tin được rằng điều này là đúng. Nếu không, một * nhiều * trang web sẽ bị hỏng trên iOS. – JJJ

11

Không giống như PHP, mà sử dụng dấu ngoặc kép hoặc đơn thay đổi như thế nào chuỗi được giải thích, không có sự khác biệt trong hai cú pháp trong ECMAScript. Một chuỗi sử dụng dấu ngoặc kép chính xác giống như một chuỗi sử dụng dấu nháy đơn. Tuy nhiên, lưu ý rằng một chuỗi bắt đầu bằng số với dấu ngoặc kép phải kết thúc bằng dấu ngoặc kép và một chuỗi bắt đầu bằng một dấu ngoặc đơn phải kết thúc bằng một dấu trích dẫn.

Nicholas C. Zakas - JavaScript chuyên nghiệp cho nhà phát triển Web

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