มันเป็นงานวิจัยและการทดสอบที่ตาบอดและไม่มีหลักการที่ทำให้ฉันเป็นลม จำเป็นต้องทำสิ่งนี้หรือไม่? ในความเป็นจริงไม่จำเป็นต้องทำการทดสอบมากมายหลังจากเข้าใจหลักการแล้ววาดกฎ มีการกำหนดกฎ ECMASCRIPT
กฎของ VAR คือ: ใช้ VAR เพื่อประกาศตัวแปรที่เป็นตัวแปรภายในมิฉะนั้นจะเรียกตัวแปรส่วนกลางก่อนไม่ว่าจะมีฟังก์ชั่นกี่ชั้น
กฎของสิ่งนี้คือ: สิ่งนี้ในฟังก์ชันวิธีการชี้ไปที่ตัวเองเสมอและสิ่งนี้ในฟังก์ชั่นสามัญมักจะชี้ไปที่ Domwindow เสมอ
// goddamntest1function foo () {var a = 123; // ตัวแปรท้องถิ่นตัวแปรส่วนกลางของฟังก์ชั่นย่อยทั้งหมด this.a = 456; // คุณสมบัติวัตถุ (ฟังก์ชัน () {แจ้งเตือน (a); // 123, การแจ้งเตือนทั่วโลก (this.a); // ไม่ได้กำหนด, ฟังก์ชั่นปกติ, จุดนี้ถึง domwindow}) (); } var f = new foo (); // goddamntest2function foo () {var a = 123; this.a = 456; (ฟังก์ชั่น (a) {// // การแจ้งเตือนการประกาศท้องถิ่น (a); // 456, ทั่วโลกถูกแทนที่ด้วยการประกาศในท้องถิ่นโดยฟังก์ชั่น}) (this.a); } var f = new foo (); // goddamntest3function foo () {var a = 123; this.a = 456; (function () {Alert (a); // 123, Global Alert (this.a); // undefined, domwindow this.b = 789; // window.b = 789}) (); (function () {Alert (this.b); // 789, window.b}) (); } var f = new foo (); (function () {Alert (this.b); // 789, window.b}) (); // goddamntest4function foo () {(ฟังก์ชั่น () {this.b = 789; // window.b = 789}) (); (function () {Alert (this.b); // 789, window.bvar b = 0; การแจ้งเตือน (b); // 0, การทดสอบดังกล่าวได้ถูกเขียนขึ้น!}) (); } var f = new foo (); (function () {Alert (this.b); // 789, window.balert (b); // 789, window.b}) ();น่าแปลกที่การแจ้งเตือนครั้งสุดท้าย (b) ยังคงส่งผลให้ 789. // ไม่แปลกใจเลย!
// goddamntest5function foo () {(ฟังก์ชั่น () {this.b = 789; // window.b = 789}) (); (function () {Alert (this.b); // 789, window.balert (b); // undefined, global var b = 0; Alert (b); // 0 นอกจากนี้ยังมีการทดสอบเช่นนี้!}) (); } var f = new foo (); (function () {Alert (this.b); // 789, window.balert (b); // 789, window.b}) ();PS: วิธี JS ในการลบตัวแปรท้องถิ่น
การแจ้งเตือน ('ค่า:'+str+'/ttype:'+typeof (str)) // ก่อนที่จะประกาศตัวแปรโปรดดู var str = "dd"; การแจ้งเตือน ('ค่า:'+str+'/ttype:'+typeof (str)) // หลังจากประกาศและกำหนดตัวแปร // ลบการแจ้งเตือนตัวแปรโลคัล ('value:'+str+'/ttype:'+typeof (str)) // หลังจากยกเลิกตัวแปรแล้วให้ดูที่ str = undefined เหมือนกับคนแรกข้างต้นคือการวิเคราะห์ล่าสุดของตัวแปร JS Global และตัวแปรท้องถิ่นที่แนะนำโดยบรรณาธิการ ฉันหวังว่ามันจะเป็นประโยชน์กับคุณ หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับคุณทันเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!