Maison  >  Article  >  interface Web  >  En savoir plus sur la portée es6

En savoir plus sur la portée es6

青灯夜游
青灯夜游avant
2019-11-26 14:47:331902parcourir

Récemment réappris les connaissances d'es6. J'ai pris quelques notes de ma propre compréhension sur la base de la vidéo et de certaines informations. J'espère que cela pourra aider tout le monde.

En savoir plus sur la portée es6

Portée ?

L'un des modèles les plus fondamentaux de presque tous les langages de programmation est la possibilité de stocker des valeurs dans des variables et de récupérer et modifier ces valeurs. variables et récupération de valeurs La capacité donne un statut au programme. Sans de tels concepts, même si un programme peut effectuer certaines tâches, celles-ci seront extrêmement limitées et peu intéressantes. Mais où doivent être stockées ces variables et comment les lire ? Afin d'atteindre cet objectif, certaines règles doivent être formulées. Cette règle est : scope

[Recommandations de cours associées : Tutoriel vidéo JavaScript] Quels sont les principaux types de scopes ?

作用域主要分为全局作用域、函数作用域、动态作用域、块级作用域;
Règles de recherche de portée ?

对象 类型
window 全局作用域
fn 函数作用域
{} 块级作用域
this 动态作用域

1. L'environnement d'exécution est divisé en portée globale et portée de fonction 2. Chaque fois que vous entrez dans un nouvel environnement d'exécution, une portée pour la recherche de variables et de fonctions est créée ; 3. L'environnement local d'une fonction peut non seulement accéder aux variables dans la portée de la fonction, mais également à l'environnement parent et même à l'environnement global.

4. L'environnement global ne peut accéder qu'aux variables et fonctions déclarées globalement ; Vous ne pouvez accéder directement à aucune donnée dans l’environnement local.


Portée globale

Une variable définie en dehors d'une fonction est une variable globale. Les variables globales ont une portée globale : tous les scripts et fonctions de la page Web peuvent être utilisés. Si la variable n'est pas déclarée dans la fonction (sans utiliser le mot-clé var), la variable est une variable globale.

// 以下实例中 carName 在函数内,但是为全局变量。
// 此处可调用 carName 变量
 
function myFunction() {
    carName = "Volvo";
    // 此处可调用 carName 变量
}

Les variables qui ne sont pas définies à l'intérieur d'une fonction ou dans un bloc de code existent en tant qu'attributs de window/global. Les variables qui ne sont pas définies à l'aide de var peuvent être supprimées, mais les variables globales ne le peuvent pas.

Portée de la fonction

Les variables déclarées à l'intérieur d'une fonction sont appelées portée de la fonction. Les variables à l'intérieur de la fonction ne sont pas accessibles directement de l'extérieur et sont accessibles via le retour ou la fermeture.

// 此处不能调用 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

Portée au niveau du bloc

Après l'apparition d'es6, une nouvelle portée au niveau du bloc a été ajoutée à l'aide de la commande let La portée externe ne peut pas obtenir la portée interne Very. sûr et clair Même si la couche externe et la couche interne utilisent le même nom de variable, elles n'interféreront pas l'une avec l'autre.

关于暂时性死区
* 在使用let命令声明变量之前,该变量都是不可用的。如果去调用这种情况被称为暂时性死区。
let 特性
*  let不存在变量提升
*  let不允许重复声明
*  拥有块级作用域
*  不可以使用window去调用
const 特性
*  定义常量
*  不允许修改常量的值
*  不允许先声明后赋值
*  同上
if(1){
  let a = 1
  console.log(a)
}

Portée dynamique

La portée dynamique ne se soucie pas de savoir comment et où les fonctions et les portées sont déclarées, seulement d'où elles sont appelées. Le mécanisme est très similaire à celui-ci ;En fait, il existe une portée lexicale (portée statique) qui s'étend hors de js. L'opposé de la portée lexicale est la portée dynamique. La portée de la fonction est lorsque la fonction est. appelé. Je viens de décider

let name='youzi';
function getName(){
    let name="tuzi";
    function getAge(){
        console.log(name)
    }
    return getAge();
}
getName() //tuzi

Portée lexicale

JavaScript utilise la portée lexicale et la portée d'une fonction est déterminée lorsque la fonction est définie.

<!--  这段代码执行就是按照词法作用域去执行的。在函数定义时已经被决定了 -->
let name='youzi';

function getName(){
   console.log(name)
}
function getAge(){
    let name='tuzi';
    getName()
}
getAge() //youzi
Cet article provient de la rubrique

tutoriel js

, bienvenue pour apprendre !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer