คำตอบนี้ใช้สำหรับ Coffeescript เวอร์ชันเก่า ดูคำตอบของ Jaider ด้านบนหากคุณต้องการคำตอบที่เป็นปัจจุบัน (ข้อมูล ณ เดือนกรกฎาคม 2014)
กาแฟนี้ทำในสิ่งที่คุณต้องการฉันคิดว่า:
if not MyVariable?
MyVariable = "assign a value"
ซึ่งผลิต:
if (!(typeof MyVariable !== "undefined" && MyVariable !== null)) {
MyVariable = "assign a value";
}
Nb หากคุณทำการมอบหมายให้MyVariable
ก่อนแม้ว่าคุณMyVariable
จะตั้งค่าเป็นไม่ได้กำหนดไว้ในรหัสนี้ก็ตามสิ่งนี้จะรวบรวมเป็น:
if (!(MyVariable != null)) {
MyVariable = "assign a value";
}
ผมเชื่อว่างานนี้เพราะ!=
ใช้โดย CoffeeScripts Existential Operator
(เครื่องหมายคำถาม) coerces จะเท่ากับundefined
null
ps if (MyVariable?false){ ... }
เข้าทำงานได้จริงหรือ? มันไม่ได้รวบรวมสำหรับฉันเว้นแต่มีช่องว่างระหว่างผู้ประกอบการและการดำรงอยู่เช่นเท็จMyVariable? false
ซึ่งทำให้ CoffeeScript ตรวจสอบเช่นฟังก์ชั่นเพราะการfalse
ที่มันคิดว่าเป็นพารามิเตอร์ของคุณMyVariable
, ตัวอย่างเช่น :
if MyVariable? false
alert "Would have attempted to call MyVariable as a function"
else
alert "but didn't call MyVariable as it wasn't a function"
ผลิต:
if (typeof MyVariable === "function" ? MyVariable(false) : void 0) {
alert("Would have attempted to call MyVariable as a function");
} else {
alert("but didn't call MyVariable as it wasn't a function");
}