목차
범위 가란 무엇이며 왜 중요한가요?
일반적인 방법은 변수가 "사라집니다"
2. 블록 범위 혼동
3. 기능 범위 트랩
4. 비동기 코드 및 폐쇄 문제
범위 문제를 디버깅하는 방법
결론
백엔드 개발 PHP 튜토리얼 변수가 사라지는 이유 : 범위 퍼즐에 대한 실용 가이드

변수가 사라지는 이유 : 범위 퍼즐에 대한 실용 가이드

Jul 24, 2025 pm 07:37 PM
PHP Variables Scope

범위 규칙으로 인해 변수가 사라집니다. 선언 된 곳에서 액세스 할 수있는 위치를 결정합니다. 2. 우발적 인 글로벌 생성은 var/let/const를 생략 할 때 발생하는 반면, 엄격한 모드는 오류를 던지면이를 방지합니다. 3. 블록 스코프 혼란이 발생합니다. var는 블록 스코핑 된 Let and Const와는 달리 함수 스코핑되기 때문에 발생합니다. 4. 기능 범위 트랩에는 가변적 인 그림자와 중첩 된 기능 변수에 대한 부적절한 액세스가 포함됩니다. 5. 비동기 문제는 var의 루프가 클로저가 let 또는 클로저를 사용하여 고정 된 동일한 변수를 공유 할 때 발생합니다. 항상 LET 또는 Const로 변수를 선언하고 엄격한 모드를 사용하며 Eslint와 같은 도구를 활용하여 범위 관련 오류를 일찍 포착하십시오.

변수가 사라지는 이유 : 범위 퍼즐에 대한 실용 가이드

몇 줄의 코드를 작성하고 변수를 설정 한 다음 갑자기“정의되지 않은”,“찾을 수 없음”또는 조용히 무시됩니다. 실망 스럽습니까? 이것은 일반적으로 당신의 언어로 된 버그가 아닙니다. 직장에서의 범위입니다. 변수가 존재하고 액세스 할 수 있는 범위를 이해하는 것이 이러한 사라지는 행위를 피하는 핵심입니다.

변수가 사라지는 이유 : 범위 퍼즐에 대한 실용 가이드

변수가 사라지는 이유와 필요한 곳에 변수를 유지하는 방법을 세분화합시다.


범위 가란 무엇이며 왜 중요한가요?

범위는 코드의 다른 부분에서 변수의 가시성을 정의합니다. 집안의 방처럼 생각하십시오. 부엌에서 선언 된 가변은 공유 공간에 있지 않으면 침실에서 볼 수 없습니다.

변수가 사라지는 이유 : 범위 퍼즐에 대한 실용 가이드

세 가지 주요 유형이 있습니다.

  • 글로벌 범위 : 변수는 기능이나 블록 외부에서 선언합니다. 그들은 어디에서나 접근 할 수 있습니다.
  • 함수 (로컬) 범위 : 함수 내부의 변수. 그 기능 만 볼 수 있습니다.
  • 블록 스코프 (예 : JavaScript의 let and const ) : 변수는 if , for 또는 plain {} 와 같은 {} 블록 내에 만 존재합니다.

범위를 벗어난 변수에 액세스하려고 할 때 숨겨진 것이 아니라 존재하지 않을 수도 있습니다.

변수가 사라지는 이유 : 범위 퍼즐에 대한 실용 가이드

일반적인 방법은 변수가 "사라집니다"

1. 우발적 인 글로벌 창조 (또는 회피)

JavaScript에서 var , let 또는 const 없는 변수를 사용하여 로컬로 유지하려는 경우에도 전역을 생성합니다.

 함수 badexample () {
    x = "지금은 전 세계입니다!";
}
Badexample ();
Console.log (x); // "지금은 전 세계입니다!" - 아마도 당신이 원하는 것이 아닐 수도 있습니다

그러나 사례를 뒤집습니다 : var / 엄격한 모드를 잊어 let ( 'use strict' ) 오류가 발생합니다. 따라서 변수는 사라지지 않고 스크립트가 충돌합니다.

수정 : 항상 let 또는 const 로 변수를 선언합니다. 엄격한 모드를 사용하여 일찍 실수를 잡으십시오.


2. 블록 범위 혼동

많은 사람들이 var 가정하고 동일하게 행동 let 합니다. 그들은하지 않습니다.

 if (true) {
    var a = "어디서나 보이도";
    B = "이 블록에서만"하자;
}
Console.log (a); // 작품 : "모든 곳에서 보이기"
Console.log (b); // 오류 : B는 정의되지 않았습니다

var 블록 스코프가 아닌 기능 스코핑입니다. 따라서 if 블록에서 a 됩니다. 그러나 b ( let )는 제한되어 있습니다.

수정 : 블록 레벨 컨트롤에 letconst 사용하십시오. var 기능 경계 만 존중한다는 것을 알고 있습니다.


3. 기능 범위 트랩

함수 내부 변수는 기본적으로 로컬입니다. 그러나 중첩 기능은 혼란을 야기 할 수 있습니다.

 함수 외부 () {
    비밀 = "숨겨진";
    함수 내부 () {
        Console.log (Secret); // 작동 : 내부는 외부 변수를 볼 수 있습니다
    }
    안의();
}
밖의();
Console.log (Secret); // 오류 : 여기에서 액세스 할 수 없습니다

이것은 어휘 범위 입니다 - 인더 함수는 외부 변수에 액세스 할 수 있지만 그 반대는 아닙니다.

그러나 내부 기능을 호출하는 것을 잊어 버리면 어떨까요? 아니면 변수를 다시 고정합니까?

 함수 외부 () {
    x = 1을하자;
    함수 내부 () {
        x = 2로하자; //이 그림자는 외부 x를냅니다
        Console.log (x); // 2
    }
    안의();
    Console.log (x); // 1 - 원래 변경되지 않았습니다
}

수정 : 가변적 인 그림자에주의하십시오. 혼란을 피하기 위해 변수 이름을 명확하게 지정합니다.


4. 비동기 코드 및 폐쇄 문제

다음은 클래식입니다 : 콜백이있는 루프의 변수.

 for (var i = 0; i <3; i) {
    settimeout (() => console.log (i), 100);
}
// 출력 : 3, 3, 3 - 0, 1, 2가 아닙니다!

왜? var 블록 범위가없고 setTimeout 실행되기 때문에 루프가 완료되었습니다. i 3이다.

그러나 var 변경 let :

 for (i = 0; i <3; i) {
    settimeout (() => console.log (i), 100);
}
// 출력 : 0, 1, 2 - 작동합니다!

각 반복에 대한 새로운 바인딩을 생성 let .

수정 : 비동기 콜백이있는 let 를 사용하십시오. 또는 var .


범위 문제를 디버깅하는 방법

변수가 사라지는 것처럼 보일 때 :

  • 선언 된 위치를 확인하십시오 - 함수, 블록 또는 전 세계에 있습니까?
  • 오류 메시지를보십시오 - "정의되지 않은"것은 그것이 존재하지 않았다는 것을 의미합니다. "정의되지 않은"이란 선언되었지만 할당되지 않은 것을 의미합니다.
  • console.log 또는 Debugger를 사용하십시오 - 단계를 통과하여 어디에서 나타나거나 사라지는 지 확인하십시오.
  • 글로벌 오염을 피하십시오 - 너무 많은 글로벌이 추적을 더 어렵게 만듭니다.

또한 고려 :

  • 기본적으로 const 사용하려면 필요할 let
  • 기능을 작게 유지하여 범위를 따라 가기가 더 쉽습니다.
  • 엄격한 모드를 활성화하고 eslint와 같은 라이터를 사용하여 선언되지 않은 변수를 포착합니다.

결론

변수는 실제로 사라지지 않습니다. 그들은 결코 시작할 수 없었습니다. 규칙은 임의적이지 않습니다. 그들은 당신의 코드를 명명 충돌과 의도하지 않은 행동으로부터 보호합니다.

언어의 범위 규칙을 이해하고, 변수를 올바르게 선언하고, 어디서 사용하는지에주의를 기울이십시오.

기본적으로 : 올바른 방에서 사용하십시오 .

위 내용은 변수가 사라지는 이유 : 범위 퍼즐에 대한 실용 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제

전능 한 범위 : PHP의 슈퍼 글로벌에 대한 실용 가이드 전능 한 범위 : PHP의 슈퍼 글로벌에 대한 실용 가이드 Jul 26, 2025 am 09:47 AM

PHP의 초 고 유적 변수는 항상 요청 데이터를 처리하고 상태를 관리하며 서버 정보를 얻는 데 사용되는 내장 배열을 사용할 수 있습니다. 1. $ _get을 사용할 때 URL 매개 변수는 유형으로 변환하고 확인해야합니다. 2. $ _post를 통해 양식 데이터를 수신 할 때 필터링을 filter_input ()로 수행해야합니다. 3. 보안 취약점을 방지하기 위해 $ _request를 사용하지 마십시오. 4. $ _session Session_Start ()을 호출하고 로그인하여 세션 ID를 재설정해야합니다. 5. $ _cookie를 설정할 때 보안, httponly 및 samesite 속성을 활성화하십시오. 6. $ _server의 정보는 완전히 신뢰할 수 없으며 보안 검증에 사용될 수 없습니다. 7. $ _ Env

범위 해상도 순서 : PHP가 변수를 찾는 방법 범위 해상도 순서 : PHP가 변수를 찾는 방법 Jul 25, 2025 pm 12:14 PM

phpresolvesvariablesinaspecificorder : 1. localscopeitinthecurrentfunction, 2.functionparameters, 3. variablesimportedviauseinclosures, 4.globalscopeonyifexplicitlydeclaredwithglobaloraccessed globals, 5.sperglobals와 같은 $ _sphichareal

경계 탐색 : 로컬 및 글로벌 범위로의 깊은 다이빙 경계 탐색 : 로컬 및 글로벌 범위로의 깊은 다이빙 Jul 26, 2025 am 09:38 AM

Thedifferencebetweenlocalandglobalscopeliesinwherevariablesaredeclaredandaccessible:globalvariablesaredefinedoutsidefunctionsandaccessibleeverywhere,whilelocalvariablesaredeclaredinsidefunctionsandonlyaccessiblewithinthem.1.Globalscopeallowsbroadacce

어휘 스코핑 마스터 링 :`사용 '키워드 및 PHP 익명 기능 어휘 스코핑 마스터 링 :`사용 '키워드 및 PHP 익명 기능 Jul 25, 2025 am 11:05 AM

PHP에서 익명 함수로 외부 변수를 사용하려면 사용 키워드를 통해 명시 적으로 가져와야합니다. 1. 사용은 폐쇄의 어휘 범위에 외부 변수를 도입하는 데 사용됩니다. 2. 기본적으로 값별로 변수를 통과하고 & $ var 구문으로 참조하여 전달하십시오. 3. 여러 변수를 쉼표로 분리 할 수 있습니다. 4. 변수의 값은 폐쇄가 정의 될 때, 실행 될 때가 아니라 캡처됩니다. 5. 루프의 각 반복은 가변 값이 올바르게 캡처되도록 독립적 인 폐쇄 사본을 생성합니다. 따라서 사용은 클로저와 외부 환경 간의 상호 작용을 달성하는 핵심 메커니즘으로 코드를보다 유연하고 제어 가능합니다.

'Global'키워드 : PHP 범위 관리의 양날의 검 'Global'키워드 : PHP 범위 관리의 양날의 검 Jul 25, 2025 pm 05:37 PM

TheglobalkeywordinphPallowsfunctionStoaccceSvariblesvariblesfloglobalscope, butithoudsparlyingsificinglificantantpladbacks.1) ItenablesquickaccesstoconfigurationValuesinSmallorlegacyscripts.2) ItfitsproceduralcodebasseSwhereDep

글로벌 액세스를 해제하는 것 :`Global` 키워드 대`$ globals '배열 글로벌 액세스를 해제하는 것 :`Global` 키워드 대`$ globals '배열 Jul 25, 2025 am 05:27 AM

thetwomaintoolsforaccessingglobalvariablesinphparetheglobalkeyword and globalssuperglobalarray; 1) theglobalkeywordcreatesErencetoAglobalvariableInsidefunction, directaccessandmodification, andifthevariableisundefined, Itinitifined

변수가 사라지는 이유 : 범위 퍼즐에 대한 실용 가이드 변수가 사라지는 이유 : 범위 퍼즐에 대한 실용 가이드 Jul 24, 2025 pm 07:37 PM

변수 disPapeArduetoscoperules —2

발전기의 범위 및 '수율'키워드의 영향 발전기의 범위 및 '수율'키워드의 영향 Jul 25, 2025 am 04:45 AM

수율을 사용한 기능은 발전기가되고, 호출되면 즉시 실행되는 대신 발전기 개체를 반환합니다. 2. 수율 일시 정지 중에 발전기의 국부 변수는 파괴되지 않지만 발전기가 소진되거나 닫힐 때까지 발전기 프레임으로 계속 존재합니다. 3. 확장 된 가변 수명주기는 특히 큰 물체를 참조 할 때 메모리 사용량이 증가 할 수 있습니다. 4. 폐쇄와 결합 할 때, LEGB 규칙은 여전히 준수하지만, 루핑 변수의 늦은 바인딩 문제는 즉시 바인딩 (기본 매개 변수 값)에 의해 해결되어야합니다. 5. 생성기는 변수의 생존 시간을 연장하여 메모리와 동작에 영향을 미치지 만 어휘 스코프 규칙을 변경하지는 않습니다.

See all articles