나를 희미하게 만든 것은이 맹목적이고 불행한 연구와 테스트입니다. 이 작업이 필요합니까? 실제로 원칙을 이해 한 후 많은 테스트를 수행 한 다음 규칙을 도출 할 필요가 없습니다. ECMAScript 규칙이 정의되었습니다.
var의 규칙은 다음과 같습니다. var를 사용하여 내부 변수 인 변수를 선언하십시오. 그렇지 않으면 기능의 계층 수에 관계없이 글로벌 변수를 먼저 호출하는 것입니다.
이것의 규칙은 다음과 같습니다. 이것은 메소드 함수에서 항상 자체를 가리키며 일반 기능에서 이것은 항상 domwindow를 가리 킵니다.
// goddamntest1function foo () {var a = 123; // 로컬 변수, 모든 하위 값의 글로벌 변수 this.a = 456; // Object Property (function () {alert (a); // 123, Global Alert (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); // 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 () {(function () {this.b = 789; // window.b = 789}) (); (function () {alert (this.b); // 789, wind } var f = new foo (); (function () {alert (this.b); // 789, window.balert (b); // 789, window.b}) ();놀랍게도, 마지막 경고 (B)는 여전히 789로 이어졌습니다. // 전혀 놀라운 일이 없습니다!
// goddamntest5function foo () {(function () {this.b = 789; // window.b = 789}) (); (function () {alert (this.b); // 789, wind } var f = new foo (); (function () {alert (this.b); // 789, window.balert (b); // 789, window.b}) ();추신 : 로컬 변수를 삭제하는 JS 메소드
Alert ( 'value :'+str+'/ttype :'+typeof (str)) // 변수를 선언하기 전에 var str = "dd"; alert ( 'value :'+str+'/ttype :'+typeof (str)) // 변수를 선언하고 할당 한 후 str = 정의되지 않은; // 로컬 변수 알림 삭제 ( 'value :'+str+'/ttype :'+typeof (str)) // 변수를 취소 한 후 첫 번째와 동일한 str = undefined를 참조하십시오.
위의 것은 편집자가 귀하에게 소개 한 JS 글로벌 변수 및 로컬 변수의 최신 분석입니다. 나는 그것이 당신에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!