Maison interface Web js tutoriel JavaScript montre la différence entre les variables globales et les variables globales implicites

JavaScript montre la différence entre les variables globales et les variables globales implicites

Feb 11, 2017 pm 03:50 PM
全局变量

Cet article présente principalement la différence entre les variables globales d'affichage javascript et les variables globales implicites. Les amis dans le besoin peuvent s'y référer

En JavaScript, il existe deux façons de déclarer des variables globales

  • Utilisez var pour afficher les variables globales déclarées

  • Variables globales implicites déclarées sans var

La différence entre les deux Cela dépend s'il peut être supprimé via l'opérateur de suppression

Premier coup d'oeil à un morceau de code

var a = 'a'; // 显式声明的全局变量
b = 'b'; // 隐式声明的全局变量
 
console.log(a); // a
console.log(b); // b
console.log(window.a); // a
console.log(window.b); // b
Copier après la connexion

En js, les variables globales sont en fait attribut global object (window ), afin que les variables globales déclarées des deux manières puissent être obtenues via window

Essayez d'utiliser delete pour supprimer

// 显式声明的全局变量不能被删除
delete a; // 返回 false 
 
// 隐式声明的全局变量可以被删除
delete b; // 返回 true 
 
// 删除情况
console.log(typeof a); // string
console.log(typeof b); // undefined
Copier après la connexion

L'opérateur delete peut supprimer les attributs d'un objet, mais si l'attribut est un attribut non configurable, false sera renvoyé lors de la suppression (une exception sera levée en mode strict)

Cela signifie que les variables déclarées à l'aide de var ne sont pas configurables. Utilisez getOwnPropertyDescriptor pour obtenir l'objet décrivant les caractéristiques de la propriété afin de vérifier cela

Object.getOwnPropertyDescriptor(window, a); // {value: "a", writable: true, enumerable: true, configurable: false}
Object.getOwnPropertyDescriptor(window, b); // {value: "b", writable: true, enumerable: true, configurable: true}
Copier après la connexion

Les deux La différence fondamentale. est que les variables explicitement déclarées ne sont pas configurables et ne peuvent pas être supprimées via l'opérateur delete

Il est à noter qu'une fois que la valeur configurable est fausse, l'objet décrivant les caractéristiques de l'attribut ne peut pas être modifié, donc le descripteur d'attribut ne peut pas être modifié. Cela permet de supprimer les variables globales explicitement déclarées par delete, mais permet à l'inverse de ne pas supprimer les variables globales implicitement déclarées par delete

b = 'b';
var descriptor = Object.getOwnPropertyDescriptor(window, b);
descriptor.configurable = false;
Object.defineProperty(window, b, descriptor);
delete b; // 返回 false
Copier après la connexion

suite aux suppléments. d'autres internautes

Variables globales et variables globales implicites en JavaScript

Il existe quelques petites différences entre les variables globales implicites et les variables globales explicitement définies, qui consistent à utiliser l'opérateur de suppression pour rendre les variables indisponibles . Capacités définies.

1. Les variables globales créées via var (créées dans tout programme autre que les fonctions) ne peuvent pas être supprimées.
2. Les variables globales implicites créées sans var (qu'elles soient créées ou non dans une fonction) peuvent être supprimées.

Cela montre que, techniquement, les variables globales implicites ne sont pas vraiment des variables globales, mais ce sont des propriétés de l'objet global. Les attributs peuvent être supprimés via l'opérateur delete, mais les variables ne peuvent pas :

// 定义三个全局变量
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"
Copier après la connexion

Dans le navigateur, l'objet global peut être utilisé dans le code via la fenêtre attribut Accès depuis n'importe quel endroit (sauf si vous faites quelque chose de scandaleux, comme déclarer une variable locale nommée window). Mais dans d'autres contextes, cette propriété de commodité pourrait être appelée autrement (ou même ne pas être disponible dans le programme). Si vous devez accéder à l'objet global sans identifiant de fenêtre codé en dur, vous pouvez effectuer les opérations suivantes dans la portée de la fonction à n'importe quel niveau :

var global = (function () {
  return this;
}());
Copier après la connexion

Ceci La méthode peut obtenir l'objet global à tout moment, car elle est appelée en tant que fonction dans la fonction (non construite via new), et cela pointe toujours vers l'objet global. En fait, ce bug ne s'applique pas au mode strict d'ECMAScript 5, vous devez donc prendre une forme différente en mode strict. Par exemple, si vous développez une bibliothèque JavaScript, vous pouvez envelopper votre code dans une fonction immédiate, puis lui transmettre une référence depuis la portée globale en tant que paramètre de votre fonction immédiate.

Ce qui précède est la différence entre les variables globales d'affichage javascript et les variables globales implicites. La différence fondamentale entre les deux est que les variables explicitement déclarées ne sont pas configurables et ne peuvent pas être supprimées via l'opérateur de suppression

Plus javascript display Pour les articles connexes sur la différence entre les variables globales et les variables globales implicites, veuillez faire attention au site Web PHP chinois !

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quelle est la différence entre les variables locales et les variables globales d'une fonction C++ ? Quelle est la différence entre les variables locales et les variables globales d'une fonction C++ ? Apr 19, 2024 pm 03:42 PM

La différence entre les variables locales C++ et les variables globales : Visibilité : les variables locales sont limitées à la fonction de définition, tandis que les variables globales sont visibles dans tout le programme. Allocation de mémoire : les variables locales sont allouées sur la pile, tandis que les variables globales sont allouées dans la zone de données globales. Portée : les variables locales se trouvent dans une fonction, tandis que les variables globales se trouvent dans tout le programme. Initialisation : les variables locales sont initialisées lorsqu'une fonction est appelée, tandis que les variables globales sont initialisées au démarrage du programme. Récréation : les variables locales sont recréées à chaque appel de fonction, tandis que les variables globales ne sont créées qu'au démarrage du programme.

Le langage Go a-t-il des variables globales statiques ? Le langage Go a-t-il des variables globales statiques ? Jul 11, 2023 pm 03:37 PM

Le langage go n'a pas de variables globales statiques. Il utilise une manière plus flexible de gérer le besoin de variables globales. Les variables globales sont généralement déclarées au niveau du package, c'est-à-dire les variables déclarées en dehors de la fonction. . sont visibles et peuvent être utilisés dans n’importe quelle fonction du package.

Que signifie la requête php ? Que signifie la requête php ? Jul 07, 2021 pm 01:49 PM

La signification chinoise de request est "request". Il s'agit d'une variable globale en PHP et c'est un tableau contenant "$_POST", "$_GET" et "$_COOKIE". La variable "$_REQUEST" peut obtenir des données et des informations COOKIE soumises par POST ou GET.

Implémentation de la sécurité des variables globales en JavaScript Implémentation de la sécurité des variables globales en JavaScript Jun 15, 2023 pm 10:33 PM

À mesure que JavaScript devient de plus en plus populaire, de plus en plus de sites Web et d'applications s'appuient sur JavaScript. Cependant, l'utilisation de variables globales en JavaScript peut poser des problèmes de sécurité. Dans cet article, je vais vous présenter comment implémenter la sécurité des variables globales en JavaScript. La meilleure façon d’éviter d’utiliser des variables globales est d’éviter d’utiliser des variables globales. En JavaScript, toutes les variables sont globales par défaut sauf si elles sont déclarées dans une fonction. Par conséquent, les variables locales doivent être utilisées autant que possible

Analyse de la concurrence des données des variables globales et des variables locales des fonctions Golang Analyse de la concurrence des données des variables globales et des variables locales des fonctions Golang May 21, 2023 am 08:19 AM

Golang est un langage de programmation fortement typé avec des fonctionnalités telles que l'efficacité, la simplicité et la concurrence, il est donc progressivement favorisé par de plus en plus de développeurs. Dans le développement de Golang, les variables globales et locales des fonctions impliquent souvent des problèmes de concurrence entre les données. Cet article analysera le problème de compétition de données entre variables globales et variables locales dans les fonctions Golang du point de vue du codage réel. 1. Compétition des données pour les variables globales Les variables globales Golang sont accessibles dans toutes les fonctions, donc si une conception et un codage rigoureux ne sont pas effectués

Redéclaration des variables globales dans le programme C Redéclaration des variables globales dans le programme C Sep 20, 2023 pm 10:29 PM

Nous verrons comment C et C++ se comportent différemment lors de la redéclaration d'une variable globale sans initialisation, de la redéclaration d'une variable globale avec initialisation, et de la redéclaration d'une variable globale et de son initialisation deux fois. De plus, nous répéterons la combinaison ci-dessus en utilisant des variables locales. 1.A) Programme C : re-déclarez les variables globales sans initialisation #include<stdio.h>intvar;intvar;intmain(){ printf("Var=%d",var); return0;} output Var=0B) C++ programme:

Les fonctions Golang peuvent-elles accéder directement aux variables globales dans goroutine ? Les fonctions Golang peuvent-elles accéder directement aux variables globales dans goroutine ? May 01, 2024 pm 05:51 PM

Oui, les fonctions Go dans Goroutine ont un accès direct aux variables globales par défaut. Raison : Goroutine hérite de l'espace mémoire du Goroutine qui l'a créé, y compris l'accès aux variables globales.

Quelles sont les variables globales en php Quelles sont les variables globales en php Aug 01, 2023 pm 01:21 PM

Les variables globales PHP incluent : 1. $_SERVER, la super variable globale du serveur et les informations sur l'environnement d'exécution sur lequel le script actuel est exécuté ; 2. $_GET, un tableau associatif de variables transmis au script actuel via la méthode GET ; . $_POST, via la méthode POST Un tableau associatif de variables transmis au script actuel ; 4. $_SESSION, qui stocke les informations relatives à l'utilisateur dans la session en cours ; 5. $_COOKIE, un tableau associatif de variables transmis au script actuel ; via les cookies HTTP ; 6. $_FILES, etc.

See all articles