예를 들어보세요:
]
코드의 의미는 함수를 선언한 후 즉시 실행하는 것입니다. Javascript의 변수 범위는 함수를 기반으로 하기 때문에 변수 오염을 피할 수 있지만 여기서 비트 연산자 "~"는 혼동을 줍니다. 언뜻 보기에 이를 제거하고 다시 실행하면 다음과 같은 오류가 보고됩니다.
이유를 설명하기 전에 먼저 Javascript의 두 가지 개념인 함수 선언과 함수 표현식을 명확히 하겠습니다.
먼저 함수 선언이 무엇인지 살펴보겠습니다.
외부 J를 도입해야 하는 경우 실행하려면 새로 고쳐야 합니다.
]
[Ctrl A 모두 선택 참고:
외부 J를 도입해야 하는 경우 실행하려면 새로 고쳐야 합니다.
]
지금 기사 시작 부분을 다시 살펴보세요. 비트 연산자 "~"를 제거한 후 오류가 보고되는 이유는 구문 분석의 관점에서 Javascript가 함수 선언 바로 뒤에 괄호 사용을 허용하지 않기 때문입니다. 반면 함수 표현식에는 이러한 제한이 없습니다. 함수 선언 앞에 "~" 연산자를 추가하면 구문 분석기가 다음을 함수 표현식으로 처리할 수 있습니다. 마찬가지로 "!, , -" 및 기타 연산자를 함수 선언 앞에 추가하면 됩니다. 함수 선언도 가능합니다.
[Ctrl A 모두 선택 참고:
외부 J를 도입해야 하는 경우 실행하려면 새로 고쳐야 합니다.
]
하지만 구문 분석 관점에서 보면 문제가 없을 것 같지만, 위 코드에는 단점이 있는데, 이는 기존 운영 환경을 오염시키고 잠재적인 문제를 일으킬 수 있습니다.
<script>
~function() {
alert("hello, world.");
}();
</script>[Ctrl A 모두 선택 참고: <script>
function() {
alert("hello, world.");
};
function foo() {
alert("hello, world.");
};
</script>외부 J를 도입해야 하는 경우 실행하려면 새로 고쳐야 합니다. <script>
var foo = function() {
alert("hello, world.");
};
</script>]<script>
var foo = function() {
alert("hello, world.");
}();
</script> <script>
(function() {
alert("hello, world.");
})();
</script> 나는 원칙을 이해합니다. 어떤 글쓰기 방법을 만나더라도 장거 승려는 더 이상 혼란스럽지 않을 것입니다.