최근에 es6에 대한 지식을 다시 배웠습니다. 영상과 일부 정보를 바탕으로 제가 이해한 내용을 메모해 두었습니다. 모든 분들께 도움이 되기를 바랍니다.
범위?
거의 모든 프로그래밍 언어의 가장 기본적인 모델 중 하나는 변수에 값을 저장하고 이 값을 검색하고 수정하는 기능입니다. 실제로는 변수에 값을 저장하고 값을 검색하는 기능입니다. 프로그램 상태를 제공합니다. 이러한 개념이 없으면 프로그램이 일부 작업을 수행할 수는 있지만 매우 제한적이고 그다지 흥미롭지 않을 것입니다. 하지만 이러한 변수는 어디에 저장되어야 하며 어떻게 읽어야 할까요? 이 목표를 달성하려면 몇 가지 규칙을 공식화해야 합니다. 이 규칙은 다음과 같습니다.
作用域主要分为全局作用域、函数作用域、动态作用域、块级作用域;
objecttype
window | globalscope |
---|---|
functionscope | |
블록 수준 범위 | |
동적 범위 | |
범위 조회 규칙? | 1. 실행 환경은 전역 범위와 함수 범위로 구분됩니다. |
전역 범위
함수 외부에서 정의된 변수는 전역 변수입니다.
전역 변수에는 전역 범위가 있습니다. 웹 페이지의 모든 스크립트와 함수를 사용할 수 있습니다.
변수가 함수 내에서 선언되지 않은 경우(var 키워드를 사용하지 않고) 해당 변수는 전역 변수입니다.
// 以下实例中 carName 在函数内,但是为全局变量。 // 此处可调用 carName 变量 function myFunction() { carName = "Volvo"; // 此处可调用 carName 变量 }
함수 내부나 코드 블록에 정의되지 않은 변수는 윈도우/글로벌 속성으로 존재합니다. var를 사용하여 정의되지 않은 변수는 삭제할 수 있지만 전역 변수는 삭제할 수 없습니다.
함수 범위
함수 내부에 선언된 변수를 함수 범위라고 합니다. 함수 내부의 변수는 외부에서 직접 접근할 수 없으며, retun이나 closure를 통해 접근할 수 있습니다.
// 此处不能调用 carName 变量 function myFunction() { let carName = "Volvo"; // 函数内可调用 carName 变量 } <!--rerurn--> function myFunction() { let carName = "Volvo"; rerurn carName; // 函数内可调用 carName 变量 } let fn=myFunction()//Volvo; <!--闭包--> function myFunction() { let carName = "Volvo"; function getName(){ console.log(carName) } return getName(); // 函数内可调用 carName 变量 } myFunction() //Volvo
es6이 등장한 후 let 명령을 사용하여 새로운 블록 수준 범위가 추가되었습니다. 이는 매우 안전하고 명확합니다. 외부 레이어와 내부 레이어가 사용됩니다. 동일한 변수 이름이 서로 간섭하지 않습니다.
关于暂时性死区 * 在使用let命令声明变量之前,该变量都是不可用的。如果去调用这种情况被称为暂时性死区。 let 特性 * let不存在变量提升 * let不允许重复声明 * 拥有块级作用域 * 不可以使用window去调用 const 特性 * 定义常量 * 不允许修改常量的值 * 不允许先声明后赋值 * 同上 if(1){ let a = 1 console.log(a) }
동적 범위
동적 범위는 함수와 범위가 선언되는 방법과 위치가 아니라 호출되는 위치에만 관심이 있습니다. 이것의 메커니즘과 매우 유사합니다.실제로 js 외부로 확장되는 어휘 범위(정적 범위)가 있습니다. 어휘 범위의 반대는 함수가 실행될 때 결정됩니다.
let name='youzi'; function getName(){ let name="tuzi"; function getAge(){ console.log(name) } return getAge(); } getName() //tuzi
JavaScript는 어휘 범위를 사용하며 함수가 정의될 때 함수의 범위가 결정됩니다.
<!-- 这段代码执行就是按照词法作用域去执行的。在函数定义时已经被决定了 --> let name='youzi'; function getName(){ console.log(name) } function getAge(){ let name='tuzi'; getName() } getAge() //youzi
이 기사는
js tutorial
위 내용은 es6 범위에 대해 자세히 알아보기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!