javascript는 드롭다운 메뉴의 값을 결정하고 이를 변수에 할당합니다 개인 테스트가 가능합니다. 변수 i를 전역 변수로 정의하는 것이 아니라 초기화 함수에 정의를 넣어야 합니다. 조금 더 빨라졌습니다 빨리 천천히 약간 느림 JavaScript에서 변수에 익명 함수를 할당하는 것과 함수에 직접 이름을 지정하는 것의 차이점은 무엇인가요? 저는 그런 일반적인 질문에 대답하는 것을 좋아하지 않습니다. 하지만 다른 오답이 사람들을 오해하게 만드는 것을 참을 수 없어서 간단하게만 답변드리겠습니다. 두 가지 작성 방법의 가장 큰 차이점은 다음과 같습니다. var init = function() { }; 함수 표현식은 현재 코드 실행 라인까지 실행되지 않으며 init에 값이 할당됩니다. function init() {}는 var와 마찬가지로 코드 앞에 정의되는 함수 선언입니다. 따라서 다음 두 가지 예는 다음과 같습니다. foo(); // 함수 선언 후 foo를 호출하면 정상적으로 호출될 수 있습니다. foo는 앞쪽에 정의되어 있기 때문입니다. 함수 foo() { 참을 반환합니다; } foo(); // 함수 표현식 전에 함수를 호출하고 오류를 보고합니다. 현재 foo 변수가 없기 때문입니다. var foo = function() { foo를 돌려주세요; };ES5에서는 함수가 최상위 범위와 함수 범위에서만 선언될 수 있다고 규정하고 있습니다. 그렇지 않으면 불법입니다. 예: if( true ) { // 최상위 및 함수 범위 외부에서 함수를 정의하는 것은 잘못된 것입니다. 브라우저에서 반드시 오류가 발생하는 것은 아니지만 표준화되어 있지는 않습니다. 함수 foo() { 참을 반환합니다; } } ES6에서는 블록 수준 범위 개념을 도입했으며 이 정의 방법이 허용됩니다. 블록 수준 범위에 선언된 함수는 let을 사용하여 선언된 변수와 유사한 범위를 가지며 블록 수준 범위 외부에서 호출할 수 없습니다. 예: { 함수 foo() { 참을 반환합니다; } } foo(); // 함수가 선언된 코드 블록 외부에서 함수를 호출하면 오류가 발생합니다.