>웹 프론트엔드 >JS 튜토리얼 >`setTimeout('alertMsg()', 3000)`보다 `setTimeout(alertMsg, 3000)`이 선호되는 이유는 무엇입니까?

`setTimeout('alertMsg()', 3000)`보다 `setTimeout(alertMsg, 3000)`이 선호되는 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-22 08:39:14975검색

Why is `setTimeout(alertMsg, 3000)` preferred over `setTimeout(

따옴표와 괄호가 있는 setTimeout 사용의 차이점

setTimeout을 사용할 때 따옴표나 괄호 없이 직접 함수를 호출하거나 함수 이름을 따옴표로 묶을 수 있습니다. 괄호와 함께. 분석 내용은 다음과 같습니다.

괄호 포함:

setTimeout("alertMsg()", 3000);

이 경우 "alertMsg()"는 문자열로 처리되며 setTimeout은 이 문자열을 다음과 같이 실행합니다. 스크립트. 이 접근 방식은 예상치 못한 동작으로 이어질 수 있으므로 권장하지 않습니다.

따옴표 및 괄호 제외:

setTimeout(alertMsg, 3000);

이것이 선호되는 방법입니다. setTimeout에 함수 참조를 전달합니다. 이는 함수로 간주되는 AlertMsg를 직접 전달합니다.

따옴표만 사용:

setTimeout("alertMsg", 3000);

이것은 이전 예의 별칭이지만 권장하지 않습니다. 이는 오해의 소지가 있는 문자열을 setTimeout에 전달하고 있음을 의미합니다.

setTimeout에 대한 추가 고려 사항

  • 함수 참조 전달: 항상 함수 전달 setTimeout의 첫 번째 인수로 참조 또는 익명 함수를 사용합니다.
  • 통과 인수: 함수에 인수를 전달하려면 콜백을 사용하거나 이를 setTimeout에 대한 인수로 포함하는 브라우저 간 호환이 덜한 방법을 사용합니다.
  • 콜백 컨텍스트: 기본적으로 콜백의 컨텍스트는 전역 개체 창입니다. 바인드를 사용하여 변경할 수 있습니다.
  • 보안: 임의의 스크립트를 실행할 수 있으므로 setTimeout에 문자열을 전달하지 마세요.

위 내용은 `setTimeout('alertMsg()', 3000)`보다 `setTimeout(alertMsg, 3000)`이 선호되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.