Câu hỏi Khi nào sử dụng dấu nháy kép hoặc đơn trong JavaScript?


console.log("double"); so với console.log('single');

Tôi thấy càng ngày càng nhiều thư viện JavaScript sử dụng dấu nháy đơn khi xử lý chuỗi. Những lý do để sử dụng cái nào khác? Tôi nghĩ rằng họ khá nhiều hoán đổi cho nhau.


1688


gốc


dễ đọc hơn? cảnh báo ("Đó là thời gian trò chơi"); hoặc cảnh báo ('It \' s time time '); - Ryan Miller
Ryan thì sao? alert("It's \"game\" time."); hoặc là alert('It\'s "game" time.');? - Francisc
Nếu dấu nháy đơn luôn được sử dụng và đôi khi là dấu ngoặc kép trong đó chữ có chứa một trích dẫn, thì chúng ta sẽ phải gõ các nút dịch ít hơn và ngón tay nhỏ bên trái của chúng ta sẽ cho chúng ta các phước lành. Nhưng vâng, như @arne đã nói, đối với báo giá đôi JSON nên được sử dụng. - IsmailS
Trích dẫn đơn sẽ dễ thực hiện hơn khi bạn đang sử dụng bàn phím châu Âu (báo giá kép là Shift + 2 không ngọt bằng cách nhấn vào một phím duy nhất thuận tiện bằng màu hồng bên phải của bạn). - Arne
@Arne Không có một điều như một "bàn phím châu Âu". Ví dụ. các Bàn phím tiếng Đức yêu cầu thay đổi cho cả hai loại báo giá. (Nhưng dấu ngoặc kép đơn giản hơn.) - ANeves


Các câu trả lời:


Lý do có khả năng nhất để sử dụng đơn vs đôi trong các thư viện khác nhau là tùy chọn lập trình viên và / hoặc tính nhất quán của API.

Khác hơn là phù hợp, sử dụng nào phù hợp nhất với chuỗi :.

Sử dụng loại báo giá khác dưới dạng chữ:

alert('Say "Hello"');
alert("Say 'Hello'");

... nhưng điều này có thể phức tạp ...

alert("It's \"game\" time.");
alert('It\'s "game" time.');

Một tùy chọn khác, mới trong ES6, là Văn bản mẫu sử dụng back-tick tính cách:

alert(`Use "double" and 'single' quotes in the same string`);
alert(`The escape the \` back-tick character in a string`);

Các văn bản mẫu cung cấp cú pháp rõ ràng cho: nội suy biến, chuỗi nhiều dòng và hơn thế nữa.


1044



Một điểm quan trọng cần lưu ý với tất cả các quy ước mã - Xác định nó một lần và gắn bó với nó. IOW, không sử dụng dấu nháy kép ở đâu đó và dấu nháy đơn ở nơi khác. - Cerebrus
@Cerebrus - Tôi nghĩ rằng sự linh hoạt là OK với điều này. Chắc chắn chọn một phong cách ưa thích, nhưng nếu bạn cần phải thoát ra khỏi phong cách để tiết kiệm rất nhiều thoát khỏi dấu ngoặc kép trong một chuỗi. Tôi sẽ ổn với điều đó. - Martin Clarke
@Mathias Bynens: Bạn không thể chứng minh sự không tồn tại của một cái gì đó. Chứng minh rằng có Là một lợi thế cho một trong hai, đó là con đường để đi. ;) - Pascal
jsfiddle.net/5HhWF/1 Tôi thấy không có sự khác biệt về tốc độ (chrome) - Olly Hicks
@ Pascal Tôi nghĩ anh ấy đang đùa. Và nó thật buồn cười. - ACK_stoverflow


Nếu bạn đang xử lý JSON, cần lưu ý rằng nói đúng, các chuỗi JSON phải được trích dẫn kép. Chắc chắn, nhiều thư viện cũng hỗ trợ các trích dẫn đơn, nhưng tôi đã gặp phải một số vấn đề lớn trong một dự án của tôi trước khi nhận ra rằng một chuỗi trích dẫn thực tế không theo tiêu chuẩn JSON.


569



Điều này rất phù hợp khi làm việc với jQuery.ajax gọi vào dịch vụ ASP.NET (Dịch vụ Web, Phương thức Trang hoặc MVC). - Schmuli
Tên thuộc tính trong các chuỗi JSON phải được trích dẫn kép, nhưng một chuỗi JSON nói chung có thể được trích dẫn một lần: var jsonString = '{"key1":"value1"}'; (Không phải tôi khuyên bạn nên xây dựng JSON theo cách thủ công.) - nnnnnn
Bạn không nên viết JSON bằng tay nếu bạn có thể .stringify() nó. - Camilo Martin
Quyền này ở đây là đối số tốt nhất cho việc luôn sử dụng dấu ngoặc kép. JSON nên có dấu ngoặc kép. Các câu trả lời khác chủ yếu là đưa ra lời khuyên để "nhất quán", có nghĩa là nếu bất kỳ một phần nào của ngôn ngữ có thể thực sự buộc một câu trích dẫn kép, bạn nên sử dụng một cách nhất quán câu trích dẫn kép đó. - Josh from Qaribou
Điều này cũng có liên quan khi làm việc với nhiều ngôn ngữ, nơi gần như tất cả các lanuguages ​​khác (Java, C, C ++, ...) sử dụng dấu ngoặc kép cho chuỗi và dấu nháy đơn cho ký tự. Tôi thích sử dụng cùng một trích dẫn trên bảng và do đó gắn bó với dấu ngoặc kép cho JS. Với nhiều năm gõ phím bổ sung để thay đổi dấu ngoặc kép là hoàn toàn không liên quan, và nếu mã hóa của bạn bị ràng buộc bởi cách gõ của bạn thì bạn cần phải thực hành gõ đúng cách. - Lawrence Dol


Không có giải pháp nào tốt hơn; tuy nhiên, tôi muốn lập luận rằng các dấu ngoặc kép đôi khi có thể hấp dẫn hơn:

  • Những người mới đến đã quen thuộc với các dấu nháy kép từ ngôn ngữ của họ. Trong tiếng Anh, chúng ta phải sử dụng dấu ngoặc kép " để xác định một đoạn văn bản được trích dẫn. Nếu chúng ta sử dụng một trích dẫn ', người đọc có thể hiểu sai nó như một sự co thắt. Ý nghĩa khác của một đoạn văn bản được bao quanh bởi ' cho biết ý nghĩa 'thông tục'. Nó có ý nghĩa để phù hợp với các ngôn ngữ đã tồn tại từ trước và điều này có thể làm giảm khả năng học và giải thích mã.
  • Dấu ngoặc kép loại bỏ nhu cầu thoát khỏi dấu nháy đơn (như trong các cơn co thắt). Xem xét chuỗi: "I'm going to the mall", so với phiên bản thoát khác: 'I\'m going to the mall'.
  • Dấu ngoặc kép có nghĩa là một chuỗi bằng nhiều ngôn ngữ khác. Khi bạn học một ngôn ngữ mới như Java hoặc C, dấu ngoặc kép luôn được sử dụng. Trong Ruby, PHP và Perl, các chuỗi được trích dẫn một cách ngụ ý không có dấu gạch chéo ngược thoát trong khi dấu ngoặc kép hỗ trợ chúng.

  • Ký hiệu JSON được viết với dấu ngoặc kép.

Tuy nhiên, như những người khác đã nói, điều quan trọng nhất là duy trì tính nhất quán.


244



Điểm đầu tiên của bạn về ngôn ngữ tiếng Anh không phải lúc nào cũng đúng và có thể thay đổi tùy theo quy ước địa phương / nhà ở. Các tài liệu in thường sử dụng dấu nháy đơn cho lời nói và sử dụng định dạng khác cho các khối văn bản trích dẫn lớn. Ý nghĩa 'thông tục' của bạn không phải là định nghĩa hữu ích về các dấu ngoặc kép để nhấn mạnh. Cộng với người dùng tiếng Anh nói chung rất nghèo với dấu ngoặc kép và dấu nháy đơn. - John Ferguson
@ Johnohnerguson, vì lý do đó một mình, nó có thể được mong muốn sử dụng dấu ngoặc kép để làm cho rằng sự khác biệt (giữa các dấu nháy đơn và đoạn trích dẫn). - user1429980
Tôi đã được ưu tiên báo giá duy nhất trước và điều này chỉ có thể đã thuyết phục tôi sử dụng dấu ngoặc kép cho dự án tiếp theo của tôi ... Cảm ơn - A5308Y
Tôi là tất cả về chủ nghĩa thực dụng. Do thực tế là 1 trong 100 chuỗi mà tôi gõ hoặc sử dụng có dấu nháy kép, và nhiều, nhiều hơn nữa có dấu nháy đơn, tôi sử dụng tăng gấp đôi. Tuy nhiên, vào cuối ngày, bạn nên sử dụng kiểu trích dẫn là 1) đã được sử dụng trong dự án nếu bạn là nhà phát triển mới cho dự án hoặc 2) sử dụng loại mà bạn cho là có ý nghĩa hơn. - dudewad
Trường hợp tại điểm-- những gì tôi vừa nhập (có nhiều dấu nháy đơn, không có dấu ngoặc kép;) - dudewad


Các chỉ có sự khác biệt được thể hiện trong những điều sau đây:

'A string that\'s single quoted'

"A string that's double quoted"

Vì vậy, nó chỉ xuống đến bao nhiêu báo giá thoát bạn muốn làm. Rõ ràng điều tương tự cũng áp dụng cho các dấu ngoặc kép trong các chuỗi được trích dẫn kép.


112



Làm thế nào bạn có thể chắc chắn đó là sự khác biệt duy nhất? - Mathias Bynens
Gareth làm cho một điểm tốt. Tôi không nghĩ về điều này - anonymous coward
@Mathias - mục 7.8.4 của đặc điểm kỹ thuật [ecma-international.org/publications/standards/Ecma-262.htm] mô tả ký hiệu chuỗi ký tự, sự khác biệt duy nhất là DoubleStringCharacter là "SourceCharacter nhưng không phải là báo giá kép" và SingleStringCharacter là "SourceCharacter chứ không phải một trích dẫn" - Gareth
@Mathias - Ok, tôi thấy quan điểm của bạn, và trong khi tôi rất thích nghĩ rằng các chương trình JavaScript được tối ưu hóa đến mức mà điều này tạo ra sự khác biệt có thể đo lường được (và thậm chí sau đó, điều này là trái với ý thích của một thông dịch viên cụ thể), tôi ' m chỉ là một chút hoài nghi về điều đó. - Gareth
Thế còn "{\"name\": \"Peter\"}" so với '{"name": "Peter"}'? Phải thừa nhận rằng, bạn có thể nói đây là sự khác biệt tương tự, nhưng nó chắc chắn sẽ ảnh hưởng đến quyết định của bạn theo một cách khác so với ví dụ trên. - Trevor


Dấu nháy đơn

Tôi muốn báo giá kép là tiêu chuẩn, bởi vì chúng có ý nghĩa hơn một chút, nhưng tôi tiếp tục sử dụng dấu nháy đơn vì họ thống trị cảnh.

Dấu nháy đơn:

Không có tùy chọn:

Dấu ngoặc kép:


68



Crockford bây giờ thích dấu ngoặc kép. - Adam Calvet Bohl
google bây giờ thích dấu ngoặc kép - Suraj Jain
airbnb giờ thích báo giá gấp đôi - Suraj Jain
@SurajJain Nguồn? Airbnb và Google hướng dẫn kiểu vẫn liệt kê duy nhất là ưa thích. - Olegs Jeremejevs
@SurajJain Ah, đây là các cấu hình trình kiểm tra kiểu mã, được viết bằng JSON, không cho phép trích dẫn đơn nào cả. Đọc chúng là một cách hay để so sánh các lựa chọn của các dự án khác nhau. - Olegs Jeremejevs


Tôi muốn nói sự khác biệt hoàn toàn là phong cách, nhưng tôi thực sự có những nghi ngờ của mình. Xem xét ví dụ sau:

/*
   Add trim() functionality to JavaScript...
    1. By extending the String prototype
    2. By creating a 'stand-alone' function
   This is just to demonstrate results are the same in both cases.
*/

// Extend the String prototype with a trim() method
String.prototype.trim = function() {
 return this.replace(/^\s+|\s+$/g, '');
};

// 'Stand-alone' trim() function
function trim(str) {
 return str.replace(/^\s+|\s+$/g, '');
};

document.writeln(String.prototype.trim);
document.writeln(trim);

Trong Safari, Chrome, Opera và Internet Explorer (được thử nghiệm trong IE7 và IE8), điều này sẽ trả về những điều sau:

function () {
 return this.replace(/^\s+|\s+$/g, '');
}
function trim(str) {
 return str.replace(/^\s+|\s+$/g, '');
}

Tuy nhiên, Firefox sẽ mang lại một kết quả hơi khác:

function () {
    return this.replace(/^\s+|\s+$/g, "");
}
function trim(str) {
    return str.replace(/^\s+|\s+$/g, "");
}

Các dấu nháy đơn đã được thay thế bằng dấu ngoặc kép. (Cũng lưu ý cách không gian thụt lề đã được thay thế bằng bốn dấu cách.) Điều này cho thấy rằng ít nhất một trình duyệt phân tích cú pháp JavaScript nội bộ như thể mọi thứ được viết bằng cách sử dụng dấu ngoặc kép. Người ta có thể nghĩ rằng, Firefox mất ít thời gian hơn để phân tích cú pháp JavaScript nếu mọi thứ đã được viết theo 'tiêu chuẩn' này.

Mà, bằng cách này, làm cho tôi một gấu trúc rất buồn, vì tôi nghĩ rằng dấu nháy đơn trông đẹp hơn nhiều trong mã. Ngoài ra, trong các ngôn ngữ lập trình khác, chúng thường nhanh hơn sử dụng so với dấu ngoặc kép, vì vậy sẽ chỉ có ý nghĩa nếu cùng được áp dụng cho JavaScript.

Phần kết luận: Tôi nghĩ chúng ta cần nghiên cứu thêm về vấn đề này.

Chỉnh sửa: Điều này có thể giải thích Kết quả kiểm tra của Peter-Paul Koch từ năm 2003

Có vẻ như dấu nháy đơn là đôi khi nhanh hơn trong Explorer Windows (khoảng 1/3 các thử nghiệm của tôi đã cho thấy thời gian phản hồi nhanh hơn), nhưng nếu Mozilla cho thấy sự khác biệt, nó sẽ xử lý các dấu ngoặc kép nhanh hơn một chút. Tôi thấy không có sự khác biệt nào cả trong Opera.

Chỉnh sửa năm 2014: Các phiên bản Firefox / Spidermonkey hiện đại không làm điều này nữa.


54



Nếu nó nhanh hơn một chút trong một trình duyệt để làm điều đó một cách và nhanh hơn một cách khác để làm theo cách khác, có vẻ như hướng dẫn duy nhất chúng ta có thể lấy đi là chúng ta nên làm bất cứ điều gì chúng ta thích hơn vì nó sẽ làm tổn thương một số người dùng và giúp đỡ người khác và số tiền chênh lệch có thể không đáng kể. "Tối ưu hóa sớm ..." và tất cả những điều đó. - Andrew Hedges
Tôi xin lỗi nhận xét của tôi không mang tính xây dựng hơn. Tôi chỉ nói rằng cách trình duyệt chọn hiển thị biểu diễn nội bộ của cú pháp có thể có rất ít việc phải làm với cách phân tích cú pháp và do đó có lẽ không phải là lý do để thích một loại dấu ngoặc kép hơn cái kia. Dữ liệu hiệu suất so sánh thời gian phân tích cú pháp đơn và đôi trên các trình duyệt, mặt khác, sẽ hấp dẫn hơn. - Chris Calo
Đây là một câu trả lời tuyệt vời, một break từ phần còn lại mà chỉ chirp 'Họ \' lại giống nhau họ đang giống nhau '... Bạn nói "Ngoài ra, trong các ngôn ngữ lập trình khác, chúng thường nhanh hơn sử dụng so với dấu ngoặc kép", Tôi có thể hỏi ngôn ngữ nào không? Tôi đã sử dụng các ngôn ngữ thường xuyên như Java và C #, không bao giờ thấy một ngôn ngữ khác ngoài JS chấp nhận các chuỗi ký tự chuỗi trong các dấu nháy đơn. Các dấu ngoặc kép đơn thường chỉ được sử dụng cho các hằng số ký tự (chỉ cho phép một char). - ADTC
AFAIK này đã được sửa trong Firefox 17, Firefox được sử dụng để giải mã khi thực hiện .toString nhưng bây giờ nó trả về bản gốc. Firefox hiện đại sẽ không có vấn đề này. - Benjamin Gruenbaum
Không biết về sự khác biệt về tốc độ. Nhưng tôi muốn lưu ý rằng "Điều này mang lại ấn tượng rằng ít nhất một trình duyệt phân tích cú pháp JavaScript nội bộ như thể mọi thứ được viết bằng cách sử dụng dấu ngoặc kép." là vô nghĩa. Nó được lồng tiếng như thể được viết với dấu ngoặc kép. Đó là nó biến đại diện bên trong của nó (mà chỉ lưu trữ chuỗi, chứ không phải dấu ngoặc kép) vào một phiên bản có thể đọc được của con người, mà nó xảy ra để sử dụng một tập hợp các dấu ngoặc kép. Nhưng dù sao, điều này dường như đã thay đổi, theo lời bình luận của Benjamin. - subsub


Nếu bạn đang làm JavaScript nội tuyến (được cho là một điều "xấu", nhưng tránh thảo luận đó) Độc thân báo giá là lựa chọn duy nhất của bạn cho chuỗi chữ, tôi tin.

ví dụ: điều này hoạt động tốt:

<a onclick="alert('hi');">hi</a>

Nhưng bạn không thể quấn "hi" trong dấu ngoặc kép, thông qua bất kỳ phương pháp thoát nào mà tôi biết. Cũng &quot; đó sẽ là dự đoán tốt nhất của tôi (vì bạn đang thoát khỏi các trích dẫn trong một giá trị thuộc tính của HTML) không hoạt động đối với tôi trong Firefox. \" sẽ không hoạt động vì tại thời điểm này bạn đang thoát cho HTML, chứ không phải JavaScript.

Vì vậy, nếu tên của trò chơi là nhất quán, và bạn sẽ làm một số JavaScript nội tuyến trong các phần của ứng dụng của bạn, tôi nghĩ rằng dấu nháy đơn là người chiến thắng. Ai đó hãy sửa tôi nếu tôi sai.


30



Đồng ý về việc được cho là một điều xấu, tuy nhiên nếu nó phải được thực hiện, tôi khá chắc chắn mã hóa kiểu URL có thể được sử dụng ví dụ <a onclick="alert(%22hi%22);">hi</a> - từ bộ nhớ này hoạt động, mặc dù nó có thể có trong thuộc tính href thay vào đó <a href="javascript:alert(%22hi%22);">hi</a> - Graza
<a onclick='alert("hi");'>hi</a> cũng hợp pháp ... - PhiLho
<a onclick="alert(&quot;hi&quot;)"> làm việc cho tôi .. - Robert
@Tom Lianza, chắc chắn alert(&quot;hi&quot;) không phải là JavaScript hợp lệ. Nhưng giá trị của các thuộc tính được mã hóa. w3.org/TR/html4/intro/sgmltut.html#didx-attribute - Robert
Đồng ý với @Robert tại đây. &quot;là cách chính xác để thoát khỏi dấu ngoặc kép bên trong thuộc tính HTML. Nó hoạt động tốt trong Firefox. @Denilson, XML (và do đó XHTML) cho phép cả hai dấu nháy kép và đơn. Xem AttValue theo nghĩa đen trong thông số XML tại w3.org/TR/REC-xml/#d0e888. - Chris Calo


Về mặt kỹ thuật không có sự khác biệt, nó chỉ là vấn đề về phong cách và quy ước.

Douglas Crockford khuyến cáo sử dụng dấu nháy đơn cho chuỗi nội bộ và dấu ngoặc kép cho bên ngoài (bởi bên ngoài chúng tôi có nghĩa là những người được hiển thị cho người dùng của ứng dụng, như tin nhắn hoặc cảnh báo).

Cá nhân tôi theo dõi điều đó.

CẬP NHẬT: Có vẻ như ông Crockford đổi ý và bây giờ khuyến cáo sử dụng dấu ngoặc kép trong suốt :)


29



Douglas Crockford vs JQuery. Chọn thuốc độc của bạn. - Eric
Lý do của Crockford là gì? - BadHorsie
Đây là quy ước tôi làm theo. Đó là sở thích cá nhân hơn. Tôi thích sử dụng các chuỗi trích dẫn duy nhất cho nội dung như công cụ chọn jQuery và / hoặc những thứ như getElementById ('id') ;, tôi giống như cách nó trông giống với dấu nháy đơn. Tuy nhiên, chuyển sang dấu ngoặc kép cho văn bản bên ngoài, vì nó thường có thể chứa dấu ngoặc kép bên trong văn bản. Ngoài ra, nó giúp bạn dễ dàng phát hiện và phân biệt giữa các chuỗi bên ngoài so với nội bộ nếu bạn đang cố gắng tìm ra lỗi trong một hoặc cái kia. - adimauro
Kể từ tháng 4 năm 2016, Douglas Crockford hiện đang đề xuất chỉ sử dụng dấu ngoặc kép, cho rằng trong thực tế, nhiều nhà phát triển đã tìm thấy sự phân đôi nội bộ so với bên ngoài khó sử dụng. - Thunderforge
Cảm ơn @Thunderforge cho bản cập nhật đó - Mariusz Nowak


Nói đúng ra, không có sự khác biệt về ý nghĩa; do đó, sự lựa chọn đi xuống để thuận tiện.

Dưới đây là một số yếu tố có thể ảnh hưởng đến việc chọn lựa của bạn:

  • Kiểu nhà: Một số nhóm nhà phát triển đã sử dụng quy ước này hoặc quy ước khác.
  • Yêu cầu phía máy khách: Bạn có đang sử dụng dấu ngoặc kép trong chuỗi không? (Xem câu trả lời của Ady).
  • Ngôn ngữ phía máy chủ: VB.Net mọi người có thể chọn sử dụng dấu nháy đơn cho java-script để kịch bản có thể được xây dựng phía máy chủ (VB.Net sử dụng dấu ngoặc kép cho chuỗi, vì vậy các chuỗi java-script dễ phân biệt nếu họ sử dụng dấu nháy đơn).
  • Mã thư viện: Nếu bạn đang sử dụng thư viện sử dụng một kiểu cụ thể, bạn có thể cân nhắc sử dụng cùng một kiểu cho chính mình.
  • Sở thích cá nhân: Bạn có thể điều một hoặc phong cách khác có vẻ tốt hơn.

24



Không đúng, ' Là 00100111 trong nhị phân, trong khi " Là 00100010 trong nhị phân. Do đó, các dấu nháy kép chiếm một nửa sức mạnh để lưu trữ dưới dạng dấu nháy đơn. Đó là sự khác biệt ngay tại đó.


Hãy xem một tham chiếu làm gì.

Bên trong jquery.js, mỗi chuỗi được trích dẫn kép.

Vì vậy, bắt đầu từ bây giờ, tôi sẽ sử dụng các chuỗi được trích dẫn kép. (Tôi đã sử dụng duy nhất!)


18



Tại sao điều này lại bị bỏ phiếu. Đây là một câu hỏi về phong cách và phong cách tốt nhất là nhất quán và theo những người đến trước bạn. - Eric
+1 The Tài liệu API jQuery cũng vậy. Đây là lý do duy nhất tôi giải quyết cho dấu ngoặc kép. Cá nhân, tôi nghĩ rằng câu trả lời rằng "nó đi xuống đến sở thích cá nhân" là một chút thiếu sót - tốt nhất để tìm ra một quy ước được sử dụng rộng rãi và gắn bó với nó. Và kể từ khi tôi có thể muốn sao chép và dán các ví dụ từ jQuery (trực tiếp hoặc gián tiếp), tôi không muốn phải thay thế các dấu ngoặc kép mỗi lần. - Steve Chambers
Có lẽ jQuery đã không làm theo những người trước họ (hoặc thực sự không quan tâm, giống như hầu hết các chuyên gia khác). ;) - James Wilkins
Nhưng Angular .... (chỉ đùa thôi: P) - Jin Wang
lol không suer nếu nghiêm trọng - Spets


Tôi hy vọng tôi không thêm một cái gì đó hiển nhiên, nhưng tôi đã đấu tranh với Django và Ajax và JSON về điều này.

Giả sử rằng trong mã HTML của bạn, bạn sử dụng dấu ngoặc kép, như bình thường nên, tôi khuyên bạn nên sử dụng dấu nháy đơn cho phần còn lại trong JavaScript.

Vì vậy, tôi đồng ý với @ady nhưng với một số chăm sóc.

Điểm mấu chốt của tôi là: Trong JavaScript có lẽ nó không quan trọng, nhưng ngay sau khi bạn nhúng nó bên trong HTML hoặc giống như bạn bắt đầu gặp rắc rối. Bạn nên biết những gì thực sự là thoát, đọc, đi qua chuỗi của bạn.

Trường hợp đơn giản của tôi là:

tbox.innerHTML = tbox.innerHTML + '<div class="thisbox_des" style="width:210px;" onmouseout="clear()"><a href="/this/thislist/'
                   + myThis[i].pk +'"><img src="/site_media/'
                   + myThis[i].fields.thumbnail +'" height="80" width="80" style="float:left;" onmouseover="showThis('
                   + myThis[i].fields.left +','
                   + myThis[i].fields.right +',\''
                   + myThis[i].fields.title +'\')"></a><p style="float:left;width:130px;height:80px;"><b>'
                   + myThis[i].fields.title +'</b> '
                   + myThis[i].fields.description +'</p></div>'

Bạn có thể phát hiện \ 'trong trường thứ ba của showThis.

Trích dẫn kép không hoạt động!

Đó là lý do tại sao, nhưng nó cũng rõ ràng lý do tại sao chúng ta nên dính vào dấu nháy đơn ... .. Tôi đoán..

Trường hợp này là quá trình nhúng HTML rất đơn giản, lỗi đã được tạo bằng một bản sao / dán đơn giản từ mã JavaScript 'được trích dẫn kép'.

Vì vậy, để trả lời câu hỏi:

Cố gắng sử dụng dấu nháy đơn trong khi ở trong HTML. Nó có thể tiết kiệm một vài vấn đề gỡ lỗi ...


13



Tôi chạy vào một vấn đề tương tự với nội suy chuỗi ES6 (backticks). Hệ thống xây dựng của tôi đã biên dịch nó thành một chuỗi được trích dẫn kép, đã phá vỡ tiêu đề Auth đã làm việc với các dấu nháy đơn! - Jay