2012-08-23 31 views
7

tôi đến câu hỏi này:CoffeeScript có hỗ trợ nội suy trong chuỗi trích dẫn đơn không?

f = (param) -> 
     console.info '#{param}' 
f(1) 

Kết quả là #{param}

Khi tôi gửi kèm theo chuỗi với dấu ngoặc kép, điều này chỉ in 1. Tôi cũng đã thử nghiệm nó trong Ruby, hành vi của nó là như nhau. Nhưng điều đó mâu thuẫn với quy tắc trong CoffeeScript.org:

Quy tắc vàng của CoffeeScript là: "Chỉ là JavaScript".

Bởi vì tôi nghĩ rằng trong Javascript, dấu nháy đơn và dấu ngoặc kép được xử lý như nhau. Và tôi không thường xuyên sử dụng Ruby. Bất cứ ai có thể giải thích lý do tại sao?

Thanks a lot.

+1

Chỉ là quy tắc vàng ở chỗ nó kết thúc * lên * là JavaScript, điều đó không có nghĩa là JavaScript hoạt động trong danh sách ở cấp nguồn CoffeeScript. Có ma thuật khắp nơi. –

Trả lời

11

"Chỉ là javascript" có nghĩa là về cơ bản nó biên dịch sang JavaScript bình thường và không cố gắng lấy một mô hình lập trình hoàn toàn khác và biên dịch nó thành JavaScript. CoffeeScript chủ yếu quan tâm đến việc tránh "các phần xấu", bản mẫu và cú pháp không cần thiết thay vì giới thiệu các cấu trúc cơ bản khác nhau như kiểu dữ liệu, v.v.

JavaScript không có nội suy chuỗi. CoffeeScript mang lại điều này từ Ruby như một sự tiện lợi. Vô hiệu hóa nó cho dấu nháy đơn chỉ cung cấp cho bạn một cách sạch sẽ để có được một chuỗi mà không có nội suy giải thích.

Không dùng Chỉ là JavaScript có nghĩa là Đó là JavaScript. Đó là một hương vị/biến thể/anh chị em ruột.

+0

Không giống như nội suy ruby ​​của một chuỗi (dấu ngoặc kép) so với chuỗi ký tự (trích dẫn một lần) * biên dịch * thành JavaScript dưới dạng chuỗi. Do đó không có chi phí * thời gian chạy *. Có thể có một thời gian biên dịch trên không. Tuy nhiên, như trong ruby ​​sự khác biệt hiệu suất là như vậy không đáng kể rằng việc sử dụng đơn vs đôi là phong cách cá nhân/sở thích sau đó hiệu suất. – Sukima

+0

"JavaScript không có nội suy chuỗi". Nó cuối cùng cũng có trong es6 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Template_literals :) – IonicBurger

13

Từ CoffeeScript documentation:

Ruby-phong cách chuỗi suy được bao gồm trong CoffeeScript. Chuỗi được trích dẫn kép cho phép các giá trị nội suy, sử dụng # {...}, và các chuỗi được trích dẫn một lần là chữ.

+3

Ngoại trừ các chuỗi đơn được trích dẫn là * không * thực sự là chữ như trong Ruby. Trong Javascript, các chuỗi được trích dẫn đơn hoạt động như các chuỗi được trích dẫn kép và diễn giải và xử lý dấu gạch chéo ngược làm ký tự thoát cho \ n, v.v, yêu cầu dấu gạch chéo ngược thực sự được thoát. Coffeescript vĩnh viễn hành vi này vì những lý do không rõ ràng với tôi. –

+1

Đây phải là câu trả lời. –

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