มีอีกวิธีหนึ่งคือประกาศฟังก์ชันของคุณเป็นตัวแปรดังนี้:
test = function() {
alert("test");
}
jsFiddle
รายละเอียด
แก้ไข (อ้างอิงจากความคิดเห็นของ @nnnnnn)
@nnnnnn:
ทำไมการพูดtest =(โดยไม่var) จะแก้ไขได้?
เมื่อคุณกำหนดฟังก์ชันเช่นนี้:
var test = function(){};
ฟังก์ชันถูกกำหนดไว้ในเครื่อง แต่เมื่อคุณกำหนดฟังก์ชันของคุณโดยไม่มีvar:
test = function(){};
testถูกกำหนดบนwindowวัตถุซึ่งอยู่ในขอบเขตระดับบนสุด
ทำไมถึงได้ผล?
ชอบ @zalun พูดว่า:
หากคุณไม่ระบุการตั้งค่าการตัดจะมีค่าเริ่มต้นเป็น "onLoad" สิ่งนี้ส่งผลให้ JavaScript ทั้งหมดถูกรวมอยู่ในฟังก์ชันที่ทำงานหลังจากโหลดผลลัพธ์แล้ว ตัวแปรทั้งหมดอยู่ในพื้นที่ของฟังก์ชันนี้จึงไม่สามารถใช้งานได้ในขอบเขตส่วนกลาง
แต่ถ้าคุณใช้ไวยากรณ์นี้:
test = function(){};
คุณสามารถเข้าถึงฟังก์ชันได้testเนื่องจากมีการกำหนดไว้ทั่วโลก
อ้างอิง: