2012-06-01 37 views
6

Tôi nhận ra mình đã chuyển đổi giữa chúng mà không hiểu tại sao, và tôi thấy khó tìm kiếm.'' và "" và không có dấu ngoặc kép có nghĩa là gì trong Javascript?

+2

Bạn có thể tạo một ví dụ cụ thể không? –

+4

Các chuỗi có thể sử dụng hoặc là '''' hoặc '''', không quan trọng (chọn cái mà khiến bạn cần phải trốn thoát ít hơn ("" Ông O'Neil "' hoặc ''tôi nói" hi " '). Số không cần phải được trích dẫn, ví dụ:' 12'. –

Trả lời

16

' '" " là điều tương tự; chúng được sử dụng để xác định các chuỗi ký tự.

Mọi thứ không có dấu ngoặc kép có thể là số nhận dạng, từ khóa, ký tự không phải chuỗi, tên thuộc tính hoặc số (có thể đã bỏ qua).

Ví dụ:

"hello world"  literal (string) 
'hello world'  literal (string) with same contents 
document    identifier (object) 
{ a: 1 }    property name 
if     keyword (start conditional statement) 
3.4     literal (number) 
/abc/    literal (regex object) 

literals chuỗi được kèm theo trong dấu nháy đơn không cần phải thoát khỏi dấu ngoặc kép và lại visa, ví dụ:

'<a href="">click me</a>' HTML containing double quotes 
"It's going to rain"   String containing single quote 
+3

Hai người cuối cùng sẽ không thực sự được coi là định danh, phải không? Dường như với tôi chúng là cú pháp theo nghĩa đen của các kiểu cá nhân của chúng (số và biểu thức chính quy), giống như hai ví dụ chuỗi đầu tiên. –

+1

@amnotiam bạn tạo một điểm hợp lệ; Tôi đã phân loại lại chúng thành literals :) cảm ơn! –

+1

Ah, chúng tôi đang ở đây. +1 Chỉ những thứ khác (mà tôi có thể nghĩ ra) dưới danh mục * nội dung không có dấu ngoặc kép * sẽ là toán tử và các dấu kết thúc câu lệnh ... và tôi giả sử khoảng trắng nếu bạn muốn đếm nó. –

5

"' được hoán đổi (nhưng cần phải được sử dụng cùng nhau).

myObject["property"]myObject.property cũng có thể hoán đổi cho nhau. $var foo = "property"; myObject[foo] (mỗi bình luận bên dưới).

+0

'myObject [property]' lấy thuộc tính của myObject được đặt tên với giá trị của thuộc tính – pbfy0

6

' '" " sử dụng để trích dẫn chuỗi chữ và đại diện cho chuỗi (s) trong khi theo nghĩa đen mà không cần trích dẫn là các biến (tên biến, không đổi) biết như nhận dạng, ví dụ

variable = 'Hello'; (Here `variable` is identifier and 'Hello' is string literal) 


var = "Ho There" 

Bạn có thể đặt câu hỏi, những gì là Sự khác biệt giữa ' (single quote)" (Double quote)

khác biệt là, chuỗi ký tự trong " nếu có ký tự đặc biệt thì họ cần phải thoát khỏi. Ví dụ:

Variable = "hi" có "; ---> đây bạn cần phải thoát khỏi " bên trong chuỗi như

Variable = "hi \" there"; 

Nhưng nếu sử dụng, ' sau đó không cần phải thoát (trừ khi có một thêm ' trong chuỗi). Bạn có thể hve như

var = 'Hello " World"'; 
0

Một jsfiddle nhanh chóng xung quanh và cả hai dấu nháy đơn và đôi thoát khỏi các mã điều khiển, vv

Trong những ngày sau, tôi đã có lỗi từ HTML, nơi không có dấu ngoặc kép, và nếu bạn nhìn vào thông số cho JSON, bạn sẽ lưu ý đây là câu trích dẫn kép được yêu cầu khi trích dẫn chuỗi ký tự. Vì vậy, nó là gấp đôi trích dẫn đó là quy ước tôi nghĩ, vì lý do lịch sử.

Tuy nhiên! Trong những ngày này, tôi phải thừa nhận rằng tôi có xu hướng bị kéo về nguồn gốc C và báo giá gấp đôi, nơi tôi muốn các ký tự thoát và chuỗi trích dẫn đơn là ký tự có hiệu quả và không bao giờ chứa ký tự thoát (mặc dù đây là về cơ bản hành vi phi sản xuất). Bên cạnh đó hầu hết JS của tôi là coffeescript hiện nay anyway, không ai từng viết javascript cho sang trọng, CS là một ấm đun nước khác nhau của cá mặc dù.

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