กรุณาบอกวิธีการเขียนจาวาสคริปต์ด้านล่างใน coffeescript
setTimeout(function(){
something(param);
}, 1000);
กรุณาบอกวิธีการเขียนจาวาสคริปต์ด้านล่างใน coffeescript
setTimeout(function(){
something(param);
}, 1000);
คำตอบ:
ฉันคิดว่ามันเป็นวิธีที่มีประโยชน์สำหรับการเรียกกลับมาเป็นอาร์กิวเมนต์สุดท้ายของฟังก์ชั่น โดยปกติจะเป็นกรณีที่มี Node.js API เป็นต้น ดังนั้นในใจ:
delay = (ms, func) -> setTimeout func, ms
delay 1000, -> something param
จริงอยู่นี่จะเป็นการเพิ่มการเรียกใช้ฟังก์ชันพิเศษให้กับทุกsetTimeout
สิ่งที่คุณทำ แต่ในล่าม JS วันนี้ข้อเสียเปรียบด้านประสิทธิภาพนั้นไม่มีนัยสำคัญเว้นแต่คุณจะทำหลายพันครั้งต่อวินาที (และคุณกำลังตั้งค่าการหมดเวลานับพันต่อวินาทีหรือยัง)
แน่นอนวิธีการที่ตรงไปตรงมามากขึ้นก็คือการตั้งชื่อการโทรกลับของคุณซึ่งมีแนวโน้มที่จะสร้างโค้ดที่อ่านได้มากขึ้น (jashkenas เป็นแฟนตัวยงของสำนวนนี้):
callback = -> something param
setTimeout callback, 1000
setTimeout ( ->
something param
), 1000
วงเล็บเป็นทางเลือก แต่การเริ่มต้นบรรทัดด้วยเครื่องหมายจุลภาคดูเหมือนจะยุ่งกับฉัน
setTimeout
และ paren เปิดเป็นสิ่งสำคัญ ช่องว่างนั้นหมายถึงวงเล็บที่ล้อมรอบการปิดเป็นพารามิเตอร์แรกเพื่อ setTimeout; หากเป็นหลัง t โดยตรง coffescript จะคาดหวังว่าวงเล็บจะล้อมรอบพารามิเตอร์ทั้งสอง
setTimeout ->
something param
, 1000
something param
อยู่ในบรรทัดเดียวกันกับsetTimeout
มันจะได้รับการแยกวิเคราะห์แตกต่างกัน
สิ่งนี้จะส่งผลให้มีการแปลที่เทียบเท่ากัน (ขอบคุณ @Joel Mueller):
setTimeout (-> something param), 1000
โปรดทราบว่านี่ไม่ใช่การแปลที่แน่นอนเนื่องจากฟังก์ชันที่ไม่ระบุชื่อจะส่งคืนผลลัพธ์ของการโทรsomething(param)
แทนที่จะไม่ได้กำหนดเช่นเดียวกับในตัวอย่างของคุณ
setTimeout (() -> something param), 1000
ฉันพบว่าวิธีที่ดีที่สุดในการทำเช่นเดียวกัน
setTimeout (-> alert "hi"), 1000
ตัวเลือกอื่น:
setTimeout(
-> something param
1000
)