84669인 학습
152542인 학습
20005인 학습
5487인 학습
7821인 학습
359900인 학습
3350인 학습
180660인 학습
48569인 학습
18603인 학습
40936인 학습
1549인 학습
1183인 학습
32909인 학습
이것은 위의 js 고도의 예입니다.함수 선언에 코드가 있는지 확인하세요
이 코드에는 잘못된 구문이 있다고 합니다. 대부분의 브라우저는 두 번째 문을 반환하고 Firefox는 첫 번째 문을 반환합니다. 이유는 무엇입니까?함수 표현 형태로 바꿀 수 있다면 왜 그럴까요?
첫 번째는 함수 선언인데 일반적으로 if-else에서는 함수를 선언하지 않기 때문이죠
두 번째는 변수에 익명 함수를 할당하는 것입니다. 프로모션 같은 건 없습니다.
함수 xxx(){}를 직접 작성하면 동일한 이름의 함수가 두 개 있으면 상단에서 var xxx를 두 번 실행하는 것과 같으므로 유효하지 않습니다
그 당시 JavaScript 사양은 여전히 ES5였고, 브라우저는 아직 블록 수준 범위(ES2016+)를 구현하지 않았으며 범위 수준은 함수 수준에만 있었습니다. 그래서 썼구나
작성자:
본질적인 차이는 없습니다
js는 미리 선언되어 있습니다! ! ! 함수는 선언될 때 범위 상단에 직접 언급됩니다. if에는 범위가 없으므로 두 함수는 하나의 범위이며 두 번째 함수가 첫 번째 함수를 대체합니다. ! 두 번째 코드의 경우 먼저 변수 sayhi를 선언한 다음 if 판단 후에 sayhi에 값을 할당합니다.
첫 번째는 함수 선언인데 일반적으로 if-else에서는 함수를 선언하지 않기 때문이죠
두 번째는 변수에 익명 함수를 할당하는 것입니다. 프로모션 같은 건 없습니다.
함수 xxx(){}를 직접 작성하면 동일한 이름의 함수가 두 개 있으면 상단에서 var xxx를 두 번 실행하는 것과 같으므로 유효하지 않습니다
그 당시 JavaScript 사양은 여전히 ES5였고, 브라우저는 아직 블록 수준 범위(ES2016+)를 구현하지 않았으며 범위 수준은 함수 수준에만 있었습니다. 그래서 썼구나
으아악작성자:
으아악본질적인 차이는 없습니다
js는 미리 선언되어 있습니다! ! ! 함수는 선언될 때 범위 상단에 직접 언급됩니다. if에는 범위가 없으므로 두 함수는 하나의 범위이며 두 번째 함수가 첫 번째 함수를 대체합니다. ! 두 번째 코드의 경우 먼저 변수 sayhi를 선언한 다음 if 판단 후에 sayhi에 값을 할당합니다.