웹 프론트엔드 JS 튜토리얼 javascript는 전역 변수와 암시적 전역 변수의 차이점을 표시합니다.

javascript는 전역 변수와 암시적 전역 변수의 차이점을 표시합니다.

Feb 11, 2017 pm 03:50 PM
전역 변수

이 글에서는 자바스크립트 표시 전역 변수와 암시적 전역 변수의 차이점을 주로 소개합니다. 필요한 친구들이 참고하면 됩니다.

자바스크립트에서는 전역 변수를 선언하는 방법이 두 가지가 있습니다

  • var를 사용하여 선언된 전역 변수 표시

  • var 없이 선언된 암시적 전역 변수

둘의 차이점은 다릅니다.

먼저 코드를 살펴보세요

var a = 'a'; // 显式声明的全局变量
b = 'b'; // 隐式声明的全局变量
 
console.log(a); // a
console.log(b); // b
console.log(window.a); // a
console.log(window.b); // b
로그인 후 복사

js에서는 전역 변수가 실제로 전역 객체(window) 속성, 두 가지 방법으로 선언된 전역 변수는 window

delete를 사용하여 삭제해 보세요.

// 显式声明的全局变量不能被删除
delete a; // 返回 false 
 
// 隐式声明的全局变量可以被删除
delete b; // 返回 true 
 
// 删除情况
console.log(typeof a); // string
console.log(typeof b); // undefined
로그인 후 복사

delete 연산자는 객체의 속성을 삭제할 수 있지만 속성이 구성 불가능한 속성인 경우 삭제 시 false를 반환합니다(엄격 모드에서는 예외가 발생합니다)

이것은 이는 var로 선언된 변수를 사용하여 구성할 수 없다는 것을 의미합니다. getOwnPropertyDescriptor를 사용하여 속성 특성을 설명하는 객체를 가져와 이를 확인하세요.

Object.getOwnPropertyDescriptor(window, a); // {value: "a", writable: true, enumerable: true, configurable: false}
Object.getOwnPropertyDescriptor(window, b); // {value: "b", writable: true, enumerable: true, configurable: true}
로그인 후 복사

둘 사이의 근본적인 차이점은 다음과 같습니다. 명시적 선언 변수는 구성 가능하지 않으며 삭제 연산자를 통해 삭제할 수 없습니다

구성 가능한 값이 false이면 속성 특성을 설명하는 객체를 수정할 수 없으므로 선언된 전역 변수를 변경할 수 없습니다. 속성 설명자를 수정하여 표시됩니다. 삭제로 삭제할 수 있지만, 반대로 암시적으로 선언된 전역 변수는 삭제로 삭제할 수 없습니다.

b = 'b';
var descriptor = Object.getOwnPropertyDescriptor(window, b);
descriptor.configurable = false;
Object.defineProperty(window, b, descriptor);
delete b; // 返回 false
로그인 후 복사

다음은 기타 항목에서 추가된 내용입니다. 네티즌

JavaScript의 전역 변수와 암시적 전역 변수

암시적 전역 변수와 명시적으로 정의된 전역 변수에는 약간의 차이가 있는데, 이는 삭제 연산자를 통해 변수를 정의되지 않은 상태로 두는 기능입니다.

1. var를 통해 생성된 전역 변수(함수 이외의 프로그램에서 생성)는 삭제할 수 없습니다.
2. var 없이 생성된 암시적 전역 변수는(함수 생성 여부와 관계없이) 삭제될 수 있습니다.

이는 기술적으로 암시적 전역 변수가 실제 전역 변수는 아니지만 전역 개체의 속성임을 보여줍니다. 속성은 삭제 연산자를 통해 삭제할 수 있지만 변수는 삭제할 수 없습니다.

// 定义三个全局变量
var global_var = 1;
global_novar = 2; // 反面教材
(function () {
  global_fromfunc = 3; // 反面教材
}());
 
// 试图删除
delete global_var; // false
delete global_novar; // true
delete global_fromfunc; // true
 
// 测试该删除
typeof global_var; // "number"
typeof global_novar; // "undefined"
typeof global_fromfunc; // "undefined"
로그인 후 복사

브라우저에서 전역 개체는 창 속성을 통해 코드의 어느 곳에서나 사용할 수 있습니다. 위치 액세스(window라는 지역 변수를 선언하는 등 터무니없는 작업을 수행하지 않는 한) 그러나 다른 상황에서는 이 편의 속성을 다른 이름으로 부를 수도 있습니다(또는 프로그램에서 사용할 수 없는 경우도 있음). 하드 코딩된 창 식별자 없이 전역 개체에 액세스해야 하는 경우 모든 수준의 함수 범위에서 다음을 수행할 수 있습니다.

var global = (function () {
  return this;
}());
로그인 후 복사

This This 메서드 전역 객체는 언제든지 함수 내에서 함수로 호출되고(new를 통해 생성되지 않음) 전역 객체를 얻을 수 있으며 이는 항상 전역 객체를 가리킵니다. 실제로 이 버그는 ECMAScript 5 엄격 모드에는 적용되지 않으므로 엄격 모드에서는 다른 형식을 취해야 합니다. 예를 들어 JavaScript 라이브러리를 개발하는 경우 코드를 즉시 함수로 래핑한 다음 전역 범위에서 이에 대한 참조를 직접 함수의 매개 변수로 전달할 수 있습니다.

위는 자바스크립트 표시 전역 변수와 암시적 전역 변수의 차이점입니다. 이 둘의 근본적인 차이점은 명시적으로 선언된 변수는 구성할 수 없으며 삭제 연산자를 통해 삭제할 수 없다는 것입니다.

더 보기 javascript display 전역 변수와 암시적 전역 변수의 차이점에 대한 관련 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

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

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

C++ 함수의 지역 변수와 전역 변수의 차이점은 무엇입니까? C++ 함수의 지역 변수와 전역 변수의 차이점은 무엇입니까? Apr 19, 2024 pm 03:42 PM

C++ 지역 변수와 전역 변수의 차이점: 가시성: 지역 변수는 정의 함수로 제한되는 반면 전역 변수는 프로그램 전체에서 볼 수 있습니다. 메모리 할당: 로컬 변수는 스택에 할당되고, 글로벌 변수는 글로벌 데이터 영역에 할당됩니다. 범위: 지역 변수는 함수 내에 있고 전역 변수는 프로그램 전체에 있습니다. 초기화: 지역 변수는 함수가 호출될 때 초기화되고, 전역 변수는 프로그램이 시작될 때 초기화됩니다. 레크리에이션: 지역 변수는 함수 호출 시마다 다시 생성되는 반면, 전역 변수는 프로그램이 시작될 때만 생성됩니다.

Go 언어에는 정적 전역 변수가 있나요? Go 언어에는 정적 전역 변수가 있나요? Jul 11, 2023 pm 03:37 PM

go 언어에는 정적 전역 변수가 없습니다. 전역 변수의 필요성을 처리하기 위해 보다 유연한 방법을 사용합니다. 전역 변수는 일반적으로 패키지 수준에서 선언됩니다. 즉, 이러한 전역 변수는 패키지 전체에 걸쳐 선언됩니다. .는 표시되며 패키지의 모든 기능에서 사용할 수 있습니다.

PHP 요청은 무엇을 의미합니까? PHP 요청은 무엇을 의미합니까? Jul 07, 2021 pm 01:49 PM

요청의 중국어 의미는 "요청"입니다. PHP의 전역 변수이며 "$_POST", "$_GET" 및 "$_COOKIE"를 포함하는 배열입니다. "$_REQUEST" 변수는 POST 또는 GET으로 제출된 데이터 및 COOKIE 정보를 얻을 수 있습니다.

JavaScript에서 전역 변수 안전성 구현 JavaScript에서 전역 변수 안전성 구현 Jun 15, 2023 pm 10:33 PM

JavaScript가 대중화되면서 점점 더 많은 웹사이트와 애플리케이션이 JavaScript를 사용하게 되었습니다. 그러나 JavaScript에서 전역 변수를 사용하면 보안 문제가 발생할 수 있습니다. 이번 글에서는 자바스크립트에서 전역 변수 안전성을 구현하는 방법을 소개하겠습니다. 전역 변수를 사용하지 않는 가장 좋은 방법은 전역 변수를 사용하지 않는 것입니다. JavaScript에서 모든 변수는 함수 내에서 선언되지 않는 한 기본적으로 전역 변수입니다. 따라서 가능하면 지역 변수를 사용해야 합니다.

Golang 함수의 전역변수와 지역변수의 데이터 경쟁 분석 Golang 함수의 전역변수와 지역변수의 데이터 경쟁 분석 May 21, 2023 am 08:19 AM

Golang은 효율성, 단순성, 동시성 등의 기능을 갖춘 강력한 형식의 프로그래밍 언어이므로 점점 더 많은 개발자가 선호하고 있습니다. Golang 개발 과정에서 함수의 전역 변수와 지역 변수는 종종 데이터 경쟁 문제를 수반합니다. 본 글에서는 Golang 함수에서 전역변수와 지역변수의 데이터 경쟁 문제를 실제 코딩의 관점에서 분석해 보겠습니다. 1. 글로벌 변수를 위한 데이터 경쟁 Golang 글로벌 변수는 모든 기능에서 접근이 가능하기 때문에 엄격한 설계와 코딩을 하지 않으면

C 프로그램에서 전역 변수 재선언 C 프로그램에서 전역 변수 재선언 Sep 20, 2023 pm 10:29 PM

초기화 없이 전역 변수를 다시 선언할 때, 초기화를 사용하여 전역 변수를 다시 선언할 때, 전역 변수를 다시 선언하고 두 번 초기화할 때 C와 C++가 어떻게 다르게 동작하는지 살펴보겠습니다. 또한 로컬 변수를 사용하여 위의 조합을 반복합니다. 1.A) C 프로그램: 초기화 없이 전역 변수 다시 선언 #include<stdio.h>intvar;intvar;intmain(){ printf("Var=%d",var); return0;} 출력 Var=0B) C++ 프로그램:

golang 함수가 goroutine의 전역 변수에 직접 액세스할 수 있나요? golang 함수가 goroutine의 전역 변수에 직접 액세스할 수 있나요? May 01, 2024 pm 05:51 PM

예, Goroutine의 Go 함수는 기본적으로 전역 변수에 직접 액세스할 수 있습니다. 이유: 고루틴은 전역 변수에 대한 액세스를 포함하여 이를 생성한 고루틴의 메모리 공간을 상속합니다.

PHP의 전역 변수는 무엇입니까 PHP의 전역 변수는 무엇입니까 Aug 01, 2023 pm 01:21 PM

PHP 전역 변수에는 다음이 포함됩니다. 1. $_SERVER, 현재 스크립트가 실행 중인 서버 및 실행 환경 정보의 슈퍼 전역 변수 2. $_GET, GET 메서드를 통해 현재 스크립트에 전달된 변수의 연관 배열; . $_POST, 현재 스크립트에 전달된 변수의 연관 배열 4. $_SESSION, 현재 세션에 사용자 관련 정보를 저장함 5. $_COOKIE, 현재 스크립트에 전달된 변수의 연관 배열 HTTP 쿠키를 통해 6. $_FILES 등

See all articles