중요var。请改用 const 和 let。使用 var 进行提升会导致错误,有时很难调试和修复。如果您需要在生产中仅使用 var를 사용하지 않는 것이 좋습니다. 대신 const 및 let를 사용하세요. 승격을 위해 var를 사용하면 디버깅 및 수정이 어려운 오류가 발생할 수 있습니다. 프로덕션에서
만 사용해야 하는 경우 esbuild를 사용하여 코드를 적절한 이전 버전의 JS로 다운그레이드하세요.
const 和 let 也有点被提升,但是在提升状态下访问它们会导致运行时错误(这称为暂时的死区),这就是为什么它们更安全,因为您会立即收到错误,而不是静默地提升 var흥미롭게도 const 및 let도 다소 승격되었지만 승격된 상태에서 액세스하면 런타임 오류가 발생합니다(이를 임시 데드존이라고 함) ), 오류를 조용히 발생시키는 대신 즉시 오류를 발생시키므로 더 안전합니다.
var
被提升,这意味着它可以在定义它的范围的开头访问,即使声明行可能位于范围的末尾。如果您在声明之前访问该 var,则它是未定义
여전히 선언을 수행해야 하고 변수를 특정 값으로 초기화해야 하기 때문입니다. 이것이 두 번째 예가 작동하는 방식입니다.여기에서 부스팅에 대해 읽어보세요:
https://developer.mozilla.org/en-US/docs/glossary/lifting
그러나 첫 번째 예 2에서는
有 2 个不同的作用域,因此第一个脚本中基本上不存在 var ,因此错误not Defined
.여기에서
var
및 해당 범위에 대해 알아보세요.https://developer.mozilla.org /en-US/docs/Web/JavaScript/Reference/Statements/var
중요
만 사용해야 하는 경우 esbuild를 사용하여 코드를 적절한 이전 버전의 JS로 다운그레이드하세요.var
。请改用const
和let
。使用 var 进行提升会导致错误,有时很难调试和修复。如果您需要在生产中仅使用var
를 사용하지 않는 것이 좋습니다. 대신const
및let
를 사용하세요. 승격을 위해 var를 사용하면 디버깅 및 수정이 어려운 오류가 발생할 수 있습니다. 프로덕션에서const
和let
也有点被提升,但是在提升状态下访问它们会导致运行时错误(这称为暂时的死区),这就是为什么它们更安全,因为您会立即收到错误,而不是静默地提升var
흥미롭게도const
및let
도 다소 승격되었지만 승격된 상태에서 액세스하면 런타임 오류가 발생합니다(이를 임시 데드존이라고 함) ), 오류를 조용히 발생시키는 대신 즉시 오류를 발생시키므로 더 안전합니다.https://developer.mozilla .org/en-US/docs/Web/JavaScript/Reference/Statements/let#temporal_dead_zone_tdz