es6 범위에 대해 자세히 알아보기

青灯夜游
풀어 주다: 2019-11-30 17:55:14
앞으로
1849명이 탐색했습니다.

최근에 es6에 대한 지식을 다시 배웠습니다. 영상과 일부 정보를 바탕으로 제가 이해한 내용을 메모해 두었습니다. 모든 분들께 도움이 되기를 바랍니다.

es6 범위에 대해 자세히 알아보기

범위?

거의 모든 프로그래밍 언어의 가장 기본적인 모델 중 하나는 변수에 값을 저장하고 이 값을 검색하고 수정하는 기능입니다. 실제로는 변수에 값을 저장하고 값을 검색하는 기능입니다. ​프로그램 상태를 제공합니다. 이러한 개념이 없으면 프로그램이 일부 작업을 수행할 수는 있지만 매우 제한적이고 그다지 흥미롭지 않을 것입니다. 하지만 이러한 변수는 어디에 저장되어야 하며 어떻게 읽어야 할까요? 이 목표를 달성하려면 몇 가지 규칙을 공식화해야 합니다. 이 규칙은 다음과 같습니다.

objecttype

fn {} This1. 실행 환경은 전역 범위와 함수 범위로 구분됩니다. 2. 새로운 실행 환경에 들어갈 때마다 변수 및 함수 검색을 위한 범위 체인이 생성됩니다. 3. 함수 범위 내의 변수에만 액세스할 수 있으며 상위 환경 및 전역 환경에도 액세스할 수 있습니다.
window globalscope
functionscope
블록 수준 범위
동적 범위
범위 조회 규칙?
4. 전역 환경은 전역으로 선언된 변수 및 함수에만 액세스할 수 있지만 로컬 환경의 데이터에는 직접 액세스할 수 없습니다.

전역 범위


함수 외부에서 정의된 변수는 전역 변수입니다.
전역 변수에는 전역 범위가 있습니다. 웹 페이지의 모든 스크립트와 함수를 사용할 수 있습니다.
변수가 함수 내에서 선언되지 않은 경우(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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:segmentfault.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!