ฟังก์ชั่นการแสดงออก:
//someFunction(); //wouldn't work when uncommented
var someFunction = function(){ alert('yay'); };
การแสดงออก func ในกรณีนี้ไม่ระบุชื่อ แต่ได้รับมอบหมายให้ var สำหรับการอ้างอิง นี่คือความแตกต่างจากคำสั่งฟังก์ชั่นที่มีข้อความในวิธีต่อไปนี้:
- ไม่สามารถยกได้ (เรียกก่อนที่จะถูกกำหนด)
new someFunction().constructor.name === 'someFunction';//false
อินสแตนซ์ไม่ได้รับชื่อ var สำหรับ constructor.name เนื่องจากการอ้างอิงไปยังฟังก์ชันได้รับการกำหนดให้กับ var แต่ var ไม่ใช่ฟังก์ชันที่เชื่อมโยงกับชื่อ var
ในคำสั่งฟังก์ชั่นที่มีข้อความ:
//someFunction(); //works when uncommented
function someFunction(){ alert('yay'); }
- งานยก
new someFunction().constructor.name === 'someFunction'; //true
ชื่อถูกผูกเข้ากับฟังก์ชันโดยตรง
โดยทั่วไปการพูดไม่มีเหตุผลที่ดีในการแสดงออกเพื่อ var ยกเว้นว่าคุณต้องการให้การโทรล้มเหลวหากสิ่งต่าง ๆ ถูกเคลื่อนย้ายหรือคุณกำลังกำหนด / กำหนดวิธีการในหนึ่งบรรทัด ฉันพบว่าการยกมีประโยชน์สำหรับการจัดระเบียบวัตถุด้วย func ภายในและคำจำกัดความของวิธีการที่ด้านล่างเพื่อให้ฉันได้รับพฤติกรรมที่แท้จริงของวัตถุและทำคำจำกัดความวิธีสาธารณะหนึ่งบรรทัด (โดยการกำหนด funcs ให้this.
กับชื่อเดียวกัน) ทั้งหมดในที่เดียว จุดเพื่อความสะดวกในการอ้างอิง คุณควรพยายามใช้คำแถลงที่มีข้อความสำหรับตัวสร้าง IMO เพื่อให้คุณสามารถระบุ 'ประเภท' ของวัตถุผ่านทางตัวสร้าง