ปาร์ตี้ในชั้นเรียนเมื่อสองวันก่อนยกเว้นการกินดื่มสนุกและนอนหลับไร้สาระมันดีใจมาก มันดีกว่าที่จะมีความสนุกสนานคนเดียวมากกว่าที่จะสนุก
PS: ถ้าคุณสำเร็จการศึกษาหรือกำลังจะจบการศึกษาคุณสามารถรวมตัวกันได้หากคุณมีเวลา หลังจากสำเร็จการศึกษาคุณจะมีเวลาน้อยเกินไปที่จะอยู่ด้วยกัน
ตอนนี้ฉันมีเวลาดูบางสิ่งบางอย่างและสรุปบางสิ่งบางอย่าง เนื่องจากฉันดูฟังก์ชัน JavaScript เมื่อไม่กี่นาทีที่ผ่านมาฉันใช้เวลาสรุปส่วนที่เกี่ยวข้องของฟังก์ชั่น แน่นอนบางส่วนในนั้นเป็นความเข้าใจของฉันเอง หากมีความเข้าใจผิดใด ๆ โปรดชี้ให้เห็น
ในส่วนนี้ฉันจะพูดคุยกับคุณเกี่ยวกับคำแถลงการประกาศฟังก์ชั่นล่วงหน้าตามความเข้าใจของฉันเอง
หมายเหตุ: ในบางสถานที่เรียกว่าโปรโมชั่นการประกาศฟังก์ชั่น การแปลแตกต่างกันความหมายเหมือนกันเพียงแค่เข้าใจพวกเขา ความเข้าใจที่ยาวนาน!
ก่อนที่จะพูดคุยเกี่ยวกับการประกาศการประกาศฟังก์ชั่นล่วงหน้ามีความจำเป็นที่จะต้องแนะนำวิธีการหลายวิธีของการกำหนดฟังก์ชั่นซึ่งเพื่อนส่วนใหญ่ควรคุ้นเคย หากคุณเข้าใจหรือไม่ต้องการเข้าใจให้ม้วนลงอย่างมีความสุข หากคุณไม่ทราบหรือต้องการทำความคุ้นเคยให้ช้าลงและเริ่มต้น
วิธีการกำหนดฟังก์ชั่น
มีสามวิธีหลักในการกำหนดฟังก์ชั่น:
1. การประกาศฟังก์ชั่น
2. ฟังก์ชั่นนิพจน์ฟังก์ชันนิพจน์)
3. ตัวสร้างฟังก์ชั่นใหม่
ในหมู่พวกเขามักใช้วิธีการนิยามฟังก์ชั่นสำหรับการประกาศฟังก์ชั่นและการแสดงออกของฟังก์ชั่น วิธีการทั้งสองนี้มีความแตกต่างและการเชื่อมต่อที่ละเอียดอ่อนมากและการใช้วิธีการทั้งสองนี้เป็นเรื่องง่ายที่จะสับสน ดังนั้นบทความนี้ส่วนใหญ่จะสรุปจุดความรู้ที่เกี่ยวข้องของวิธีการนิยามฟังก์ชั่นทั้งสองนี้ แน่นอนหัวข้อของบทความนี้ยังคงเกี่ยวกับฟังก์ชั่นล่วงหน้า
รูปแบบทั่วไปสำหรับการประกาศฟังก์ชั่น:
ฟังก์ชันฟังก์ชัน (arg1, arg2, ... ) {<!-function body->}การแสดงออกของฟังก์ชั่น
•รูปแบบทั่วไปของการแสดงออกของฟังก์ชั่น:
var variable = function (arg1, arg2, ... ) {<!-function body->}ฟังก์ชันนิพจน์ที่มีชื่อ (วงเล็บชื่อฟังก์ชัน):
var variable = function name (arg1, arg2, ... ) {<!-function body->}ฟังก์ชั่นนิพจน์ที่มีชื่อเช่นเดียวกับที่สามารถใช้สำหรับการเรียกซ้ำได้:
var variable = function name (x) {ถ้า (x <= 1) return 1; eltle return x*functionName (x);}งบล่วงหน้า
คำสั่ง VAR ล่วงหน้า
เพื่อนควรเคยได้ยินคำสั่งล่วงหน้า ฉันอยากจะย้ำที่นี่เพราะคำแถลงล่วงหน้าเป็นความแตกต่างที่สำคัญระหว่างการประกาศฟังก์ชั่นและการแสดงออกของฟังก์ชั่นและมันก็มีความสำคัญอย่างยิ่งสำหรับเราที่จะเข้าใจวิธีการนิยามฟังก์ชั่นทั้งสองนี้ต่อไป
แต่ก่อนที่จะมีการประกาศฟังก์ชั่นล่วงหน้ามีความจำเป็นที่จะต้องบอกว่าการประกาศ VAR นั้นล่วงหน้า
ก่อนอื่นให้ข้อสรุปก่อนหน้านี้ของคำสั่ง VAR:
ตัวแปรถูกกำหนดไว้ในสคริปต์หรือฟังก์ชั่นที่ประกาศพวกเขาและคำสั่งประกาศตัวแปรจะถูกขั้นสูงไปยังด้านบนของสคริปต์หรือฟังก์ชั่น อย่างไรก็ตามการดำเนินการเริ่มต้นของตัวแปรยังคงดำเนินการที่คำสั่ง VAR ดั้งเดิมและค่าของตัวแปรจะไม่ได้กำหนดก่อนที่คำสั่งจะถูกประกาศ
สามารถสรุปได้สามจุดง่าย ๆ จากข้อสรุปข้างต้น:
1. การประกาศตัวแปรจะสูงขึ้นไปด้านบนของฟังก์ชั่น;
2. เป็นเพียงการประกาศขั้นสูงการเริ่มต้นไม่สูงและการเริ่มต้นยังคงเริ่มต้นที่ตำแหน่งการเริ่มต้นดั้งเดิม
3. ค่าของตัวแปรไม่ได้กำหนดก่อนการประกาศ
มาลองดูตัวอย่าง:
var fESTOMENT = 'หล่อ'; ฟังก์ชั่น handsometougly () {Alert (หล่อ); var หล่อ = 'น่าเกลียด'; การแจ้งเตือน (หล่อ);} handsometougly ();ผลลัพธ์ที่ถูกต้องคือ:
เอาต์พุตแรกที่ไม่ได้กำหนดแล้วเอาต์พุตน่าเกลียด
เอาต์พุตข้อผิดพลาดคือ:
เอาต์พุตแรกหล่อแล้วเอาท์พุทน่าเกลียด
นี่คือสิ่งที่การประกาศตัวแปรเล่นล่วงหน้า ตัวแปรท้องถิ่นหล่อถูกกำหนดในร่างกายฟังก์ชั่นทั้งหมด ตัวแปรหล่อในร่างกายฟังก์ชั่นถูกระงับ โอ้ไม่มันครอบคลุมตัวแปรระดับโลกที่หล่อเหลาในชื่อเดียวกันเนื่องจากการประกาศตัวแปรนั้นสูงมากนั่นคือ Var Fosition นั้นก้าวหน้าไปด้านบนของฟังก์ชั่นซึ่งเป็นเช่นนี้:
var หล่อ = 'หล่อ'; ฟังก์ชั่น handsometougly () {var หล่อ; การแจ้งเตือน (หล่อ); var หล่อ = 'น่าเกลียด'; การแจ้งเตือน (หล่อ);} handsometougly ();ดังนั้นก่อนที่จะแจ้งเตือน (หล่อ) มีการประกาศที่หล่อเหลาแล้วตามที่กล่าวไว้ข้างต้น
ค่าของตัวแปรจะไม่ได้กำหนดก่อนการประกาศ
ดังนั้นผลลัพธ์แรกจึงไม่ได้กำหนด
และเนื่องจากสิ่งที่กล่าวถึงข้างต้น:
เป็นเพียงการประกาศขั้นสูงการเริ่มต้นยังไม่ก้าวหน้าการเริ่มต้นยังคงเริ่มต้นที่ตำแหน่งการเริ่มต้นดั้งเดิม
ดังนั้นผลลัพธ์ที่สองจึงน่าเกลียด
การประกาศฟังก์ชั่นล่วงหน้า
สองถัดไปเราจะเริ่มพูดคุยเกี่ยวกับการประกาศการประกาศฟังก์ชั่นล่วงหน้าร่วมกับการประกาศ VAR
เพื่อนควรคุ้นเคยกับการประกาศการประกาศฟังก์ชั่นล่วงหน้าดังนั้นให้ตัวอย่างที่คุ้นเคยมาก
saytruth (); <!-การประกาศฟังก์ชั่น-> ฟังก์ชั่นบอกว่า truth () {แจ้งเตือน ('myvin เป็นรูปหล่อ');} saytruth (); <!-ฟังก์ชั่นนิพจน์-> var saystruth = function () {Alert ('myvin หล่อ');};};};เพื่อนทุกคนรู้ว่าวิธีการนิยามฟังก์ชั่นของการประกาศฟังก์ชั่นนั่นคือวิธีการเรียกฟังก์ชั่นแรกด้านบนนั้นถูกต้องและความจริงที่ว่า Myvin หล่อ สามารถเป็นเอาต์พุตได้เนื่องจากคำสั่งเรียกใช้ฟังก์ชันสามารถวางหลังจากการประกาศฟังก์ชั่น สำหรับวิธีการนิยามฟังก์ชั่นของนิพจน์ฟังก์ชั่นนั่นคือวิธีการโทรฟังก์ชันที่สองด้านบนไม่สามารถส่งออกผลลัพธ์ที่ถูกต้องของ myvin นั้นหล่อ
เมื่อรวมกับ Myvin ข้างต้นนั้นหล่อ ตัวอย่างบทสรุปของการประกาศฟังก์ชั่นล่วงหน้าดูเหมือนจะเข้าใจง่าย ไม่ใช่แค่ว่าเมื่อใช้วิธีการนิยามฟังก์ชั่นของการประกาศฟังก์ชั่นการเรียกใช้ฟังก์ชันสามารถวางได้ทุกที่ ใช่คุณพูดถูกเพื่อนของฉันฉันไม่รู้วิธีหักล้างคุณ จากนั้นให้ฉันบอกคุณอีกสองสามคำ
จากสิ่งที่เพื่อนของฉันพูด
ไม่ใช่แค่เมื่อใช้วิธีการนิยามฟังก์ชั่นสำหรับการประกาศฟังก์ชั่นการเรียกใช้ฟังก์ชันสามารถวางได้ทุกที่?
มันสามารถนำไปสู่เล็กน้อย:
เมื่อการประกาศฟังก์ชั่นขั้นสูงการประกาศฟังก์ชั่นและร่างกายของฟังก์ชั่นจะสูงขึ้น
และ:
การประกาศฟังก์ชั่นจะดำเนินการในช่วงระยะเวลาก่อนการดำเนินการนั่นคือการประกาศฟังก์ชั่นจะดำเนินการเมื่อเบราว์เซอร์พร้อมใช้งานรหัส เนื่องจากการประกาศฟังก์ชั่นจะดำเนินการในช่วงระยะเวลาการดำเนินการที่คาดหวังการประกาศฟังก์ชั่นจะไม่ถูกดำเนินการอีกต่อไปในช่วงระยะเวลาการดำเนินการ (มีคนที่ดำเนินการแล้วและพวกเขาจะไม่ดำเนินการตามธรรมชาติอีกต่อไป)
ด้านบนเป็นจุด
ทำไมการแสดงออกของฟังก์ชั่นไม่สามารถประกาศล่วงหน้าได้
มาพูดถึงอีกเรื่องหนึ่ง: ทำไมการประกาศฟังก์ชั่นไม่สามารถประกาศล่วงหน้าเช่นการประกาศฟังก์ชั่นได้?
โชคดีที่ฉันรู้นิดหน่อยมิฉะนั้นฉันไม่รู้ว่าฉันควรตอบอย่างไร
อะแฮ่มตามความเข้าใจของฉันให้ฉันอธิบายให้คุณทราบ:
เราได้กล่าวไว้ข้างต้นคำสั่ง VAR ล่วงหน้าให้ความสนใจกับสิ่งที่ฉันกล่าวถึงข้างต้น:
เป็นเพียงการประกาศขั้นสูงการเริ่มต้นยังไม่ก้าวหน้าการเริ่มต้นยังคงเริ่มต้นที่ตำแหน่งการเริ่มต้นดั้งเดิม
โอเคมาวางฟังก์ชั่นนิพจน์ที่นี่:
var variable = function (arg1, arg2, ... ) {<!-function body->}การแสดงออกของฟังก์ชั่นเป็นวิธีการเขียนคำจำกัดความของฟังก์ชั่นลงในนิพจน์ (ดูเหมือนว่าจะเสียเวลา แต่สิ่งนี้มีประสิทธิภาพในการตีความและทำความเข้าใจว่าการแสดงออกของฟังก์ชั่นไม่สามารถประกาศล่วงหน้าได้) ซึ่งเป็นการกำหนดวัตถุฟังก์ชันให้กับตัวแปรดังนั้นเราจึงเขียนนิพจน์ฟังก์ชันเช่นนี้:
var variable = 5 เห็นสิ่งนี้บางทีเพื่อนอาจเข้าใจว่าหนึ่งคือการกำหนดค่าให้กับตัวแปรและอีกอันคือการกำหนดวัตถุฟังก์ชันให้กับตัวแปร ดังนั้นสำหรับการแสดงออกของฟังก์ชั่นการกำหนดตัวแปรจะไม่ก้าวหน้านั่นคือฟังก์ชั่น (arg1, arg2, ... ) {<!-body function->} จะไม่ก้าวหน้าดังนั้นคำจำกัดความของฟังก์ชั่นจึงไม่ถูกดำเนินการดังนั้นการแสดงออกของฟังก์ชั่นจึงไม่สามารถประกาศล่วงหน้าได้
วิเคราะห์อินสแตนซ์เริ่มต้นของการประกาศฟังก์ชั่น
ประโยคเดียวกันความจริงมาจากตัวอย่าง:
saytruth (); ถ้า (1) {ฟังก์ชั่น saytruth () {alert ('myvin เป็นรูปหล่อ')};} else {function saytruth () {alert ('myvin is regly')};};เมื่อเบราว์เซอร์ไม่ได้ทำข้อผิดพลาด (โปรดทดสอบตัวเองว่าเบราว์เซอร์ที่เกี่ยวข้องได้โยนข้อผิดพลาดทำไมฉันไม่ทดสอบฉันจะบอกว่าฉันขี้เกียจได้หรือไม่) ผลการส่งออกของเบราว์เซอร์คือ Myvin นั้นน่าเกลียด (ฉันไม่ต้องการยอมรับ แต่ความจริงก็คือฉันควรอ่านมากขึ้น
ทำไม แน่นอนคำสั่งนั้นก้าวหน้า เนื่องจากการประกาศของฟังก์ชั่นเป็นขั้นสูงการประกาศฟังก์ชั่นจะถูกแยกวิเคราะห์ก่อนที่รหัสจะถูกดำเนินการ คำสั่งการดำเนินการมีดังนี้: ฟังก์ชั่นการแยกวิเคราะห์ครั้งแรกบอกว่า truth () {Alert ('myvin เป็นรูปหล่อ')} และเมื่อฟังก์ชั่นการแยกวิเคราะห์บอกว่า truth () {Alert ('myvin is asly')}, เอาชนะฟังก์ชันก่อนหน้านี้ เมื่อเราเรียกฟังก์ชั่น SayTruth () นั่นคือในระหว่างการดำเนินการรหัสการประกาศจะถูกเพิกเฉยดังนั้น Myvin จึงน่าเกลียดจะถูกส่งออกตามธรรมชาติ (ความจริงที่โหดร้าย ... ) หากคุณลืมคุณสามารถเห็นสิ่งที่คุณพูดไว้ข้างต้น:
การประกาศฟังก์ชั่นจะดำเนินการในช่วงระยะเวลาก่อนการดำเนินการนั่นคือการประกาศฟังก์ชั่นจะดำเนินการเมื่อเบราว์เซอร์พร้อมใช้งานรหัส เนื่องจากการประกาศฟังก์ชั่นจะดำเนินการในช่วงระยะเวลาการดำเนินการที่คาดหวังการประกาศฟังก์ชั่นจะไม่ถูกดำเนินการอีกต่อไปในช่วงระยะเวลาการดำเนินการ (มีคนที่ดำเนินการแล้วและพวกเขาจะไม่ดำเนินการตามธรรมชาติอีกต่อไป)
การโทรอย่างใกล้ชิด
มาพูดคุยเกี่ยวกับฟังก์ชั่นที่ประกาศล่วงหน้า (ปรับปรุง) ที่นี่ ฉันหวังว่าความเข้าใจและไร้สาระของฉันจะเป็นประโยชน์กับผู้ที่ต้องการ
แน่นอนว่าการฝึกฝนสร้างความรู้ที่แท้จริง ความเข้าใจความรู้ความเข้าใจและการประยุกต์ใช้สิ่งต่าง ๆ ยังคงอยู่ในการอ่านการใช้และการสรุปเพิ่มเติม ฉันจำคำพูดที่มีชื่อเสียงที่พูดถึงคำแถลงและการปฏิบัติ: "ขอย้ายและให้กำลังใจสำหรับข้อความใหม่"
การวิเคราะห์สั้น ๆ ข้างต้นของการประกาศฟังก์ชั่นและการแสดงออกของฟังก์ชั่น - คำแถลงการประกาศฟังก์ชั่นคือเนื้อหาทั้งหมดที่ฉันได้แบ่งปันกับคุณล่วงหน้า ฉันหวังว่าคุณจะให้ข้อมูลอ้างอิงและฉันหวังว่าคุณจะสนับสนุน wulin.com มากขึ้น