1.
var name = "The Window"; var object = { name : "My Object", getName: function(){ return this.name; } };
여기서 getName() 메소드는 단순히 this.name의 값을 반환합니다. 다음은 object.getName()
을 호출하는 여러 가지 방법입니다.
방법과 각각의 결과.
object.getName(); //"내 개체"
(object.getName)(); //"내 개체"
(object.getName = object.getName)(); //비엄격 모드의 "창"
세 번째 경우(object.getName=object.getName); var fn=(object.getName=object.getName);fn();
과 같습니다.2.
function outputNumbers(count){ for (var i=0; i < count; i++){ //alert(i); } var i; //重新声明变量 alert(i); //计数 } outputNumbers(5);
JavaScript는 동일한 변수를 여러 번 선언하는 경우 이를 알려주지 않으며 후속 선언을 무시합니다.
참고하세요(그러나 후속 선언에서는 변수 초기화를 수행합니다). 익명 함수를 사용하면 블록 수준 범위 지정을 모방하고 이 문제를 피할 수 있습니다.
3.
function(){ //这里是块级作用域 }(); //出错!
이 코드는 JavaScript가 function 키워드를 함수 선언의 시작 부분으로 처리하고 function
숫자 선언 뒤에는 괄호가 올 수 없습니다. 그러나 함수 표현식 뒤에는 괄호가 올 수 있습니다. 함수 선언을 함수 표현식으로 변환하려면
아래와 같이 괄호 한 쌍을 추가하면 됩니다.
(function(){ //这里是块级作用域 })();
4.
function outputNumbers(count){ (function () { for (var i=0; i < count; i++){ alert(i); } })(); alert(i); //导致一个错误! }
다시 작성된 이 outputNumbers() 함수에서는 for 루프 외부에 개인 범위를 삽입합니다. 익명
함수에 정의된 모든 변수는 실행이 끝나면 삭제됩니다. 따라서 변수 i는 루프 내에서만 사용할 수 있으며 사용 후에는 삭제됩니다.
이 익명 함수는 클로저이고 포함 범위의
에 액세스할 수 있으므로 변수 count는 개인 범위에서 액세스할 수 있습니다.
모든 변수.
이 기술은 전역 범위에 너무 많은 변수와 함수를 추가하는 것을 제한하기 위해 전역 범위의 함수 외부에서 자주 사용됩니다.
일반적으로 말하면, 전역 범위에 가능한 한 적은 수의 변수와 함수를 추가하려고 노력해야 합니다. 많은 개발자가 참여하는 대규모
프로젝트에서
애플리케이션에 전역 변수와 함수가 너무 많으면 이름 충돌이 쉽게 발생할 수 있습니다. 개인 범위를 생성함으로써 각 개발자는
전역 범위를 망칠 염려 없이 자신만의 변수를 사용할 수 있습니다. 예:
(function(){ var now = new Date(); if (now.getMonth() == 0 && now.getDate() == 1){ alert("Happy new year!"); } })();
위의 코드를 전역 범위에 넣어서 1월 1일이 언제인지 판단하는 데 사용할 수 있습니다.
사용자가 새해 인사 메시지를 표시합니다. 이제 변수는 익명 함수의 지역 변수이므로 전역 범위에 있을 필요가 없습니다.
에서 생성하세요.
위 내용은 이 글의 전체 내용입니다. 모두 마음에 드셨으면 좋겠습니다.