Maison interface Web js tutoriel javascript权威指南 学习笔记之变量作用域分享_javascript技巧

javascript权威指南 学习笔记之变量作用域分享_javascript技巧

May 16, 2016 pm 06:01 PM
变量作用域

不知道,大家对语言中变量的“声明”与“定义”是怎么理解的,
我的理解如下:
“声明”变量,只是仅仅声明,而“定义”变量,指声明了,并且赋值了。
例如:

复制代码 代码如下:

var name;//只是声明
var num = 11;//声明,并且赋值,即定义了
var password = "yangjiang";//声明,并且赋值,即定义了

下面是几点总结:
变量的作用域:全局的和局部的。(注意:如果尝试读取一个未声明的变量的值,javascript会生成一个错误)
第一点:在都使用var关键字修饰变量的情况下,如果给一个局部变量或函数的参数声明的名字与某个全局变量的名字相同,
那么就有效地隐藏了这个全局变量。
例如:
复制代码 代码如下:

var scope1 = "global";//var修饰
function checksScope(){
var scope1 = "local";//var修饰
document.write(scope1);
}checksScope();//local

第二点:如果尝试给一个未用 var 关键字声明的变量,那么,隐式声明的变量总是被创建为全局变量,即使
该变量只在一个函数体内使用(只有该函数运行了,才会发生作用),注意不支持函数嵌套的情形。
例如:
复制代码 代码如下:

scope2 = "globalAAAAA";//没有使用var修饰(js会默认将其声明为全局变量)
function checkScopeA(){
scope2 = "localAAAAA";//没有使用var修饰(js会默认将其声明为全局变量)
document.write("
"+scope2);
myscope = "myLocalAAAAA";//没有使用var修饰(js会默认将其声明为全局变量)
document.write(","+myscope);
}
checkScopeA();//localAAAAA,myLocalAAAAA *A
document.write("
"+scope2);//localAAAAA *B
document.write("
"+myscope);//myLocalAAAAA *C

如果将上面的例子中的 *A处的代码注释掉,
例如:
复制代码 代码如下:

scope2 = "globalAAAAA";//没有使用var修饰(js会默认将其声明为全局变量)
function checkScopeA(){
scope2 = "localAAAAA";//没有使用var修饰(js会默认将其声明为全局变量)
document.write("
"+scope2);
myscope = "myLocalAAAAA";//没有使用var修饰(js会默认将其声明为全局变量)
document.write(","+myscope);
}
//checkScopeA(); *A
document.write("
"+scope2);//globalAAAAA *B
document.write("
"+myscope);//发生错误 *C

因为函数checkScopeA没有执行,所以 *B处输出为globalAAAAA;
因为函数checkScopeA没有执行,所以变量myscope没有声明,如果尝试读取一个未声明的变量,会发生错误。
第三点:
在javascript中,函数的定义是可以嵌套的。由于 每个函数都有它自己的局部作用域,所以有可能出现几个局部作用域的嵌套层。
例如:
复制代码 代码如下:

var scope3 = "global scope"; //定义了一个全局变量
function checkScopeB(){
var scope3 = "local scope"; //定义了一个局部变量,覆盖了全局变量scope3
function nested(){
var scope3 = "nested scope"; //在函数的函数的内部,定义了一个局部变量
document.write("
"+scope3); //nested scope
}
nested();
}
checkScopeB();//nested scope

第四点:
在javascript中,没有块级作用域,函数中声明的所有变量,无论是在哪里声明的,在整个函数中它们都是有声明的。
在javascript中,没有块级作用域,函数中定义的所有变量,无论是在哪里定义的,在整个函数中它们都是有定义的。
例如:
复制代码 代码如下:

function test(o){//根据以上的说明:此函数中的i,j,k三个变量的作用域是相同的。
var i = 0; //变量 i 在整个函数中都有定义
if(typeof o == "object"){
var j = 0 ; //变量 j 在整个函数中都有定义,而不仅仅是在 if 语句块
for(var k=0;kdocument.write("
k的值为:"+k);
}
document.write("
for循环外k的值:"+k);//此时的 k 仍然被定义了,k=10
}
document.write("
j的值:"+j); //变量 j 被声明了,但可能没有被初始化 因为可能往函数中 传入的参数 不是对象 ,if语句块不会执行
}

下面通过两种方式调用此函数:
方式一:传入对象
test({});//输出结果:上例中的注释
方式二:什么都不传
test();//输出结果:j的值:undefined
想不明白的是,在第二种方式中的输出结果,为什么会是 undefined。我当时猜的是:j的值:0
后来,这本书上面说:
由于局部变量在整个函数体内都是有声明(或定义)的,这就意味着在整个函数体中都隐藏了同名的全局
变量。虽然 局部变量在整个函数体内中都是有声明(或定义)的,但是在执行var语句之前,它是不会被初始化的。
这样的话,上面的方式二调用的输出结果,就比较好解释了,由于变量j在整个函数中都有定义,而又由于传入函数的参数为空,所以函数体中的if语句不会执行,从而使得j的值为undefined.(这是我参照上面书上说的那句话的理解)
下面的例子,更好的说明:
复制代码 代码如下:

var sssss = "全局变量";
function f(){
document.write("
"+sssss);//输出:undefined 而不是输出"全局变量"
var sssss = "局部变量";
document.write("
"+sssss);//输出:局部变量
}
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

Repo: Comment relancer ses coéquipiers
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
4 Il y a quelques semaines By DDD

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)

Comment est déterminée la portée variable d'une fonction PHP ? Comment est déterminée la portée variable d'une fonction PHP ? Apr 16, 2024 pm 04:51 PM

La portée des variables en PHP est divisée en portée locale (au sein de la fonction), globale (accessible dans le programme) et portée de classe (accessible dans l'instance de classe). Le mot-clé global peut déclarer des variables locales comme variables globales, et le mot-clé static peut déclarer des variables locales comme variables statiques, en conservant leurs valeurs entre les appels de fonction.

Compréhension approfondie du cycle de vie des fonctions Golang et de la portée variable Compréhension approfondie du cycle de vie des fonctions Golang et de la portée variable Apr 19, 2024 am 11:42 AM

Dans Go, le cycle de vie de la fonction comprend la définition, le chargement, la liaison, l'initialisation, l'appel et le retour ; la portée des variables est divisée en niveau de fonction et au niveau du bloc. Les variables d'une fonction sont visibles en interne, tandis que les variables d'un bloc ne sont visibles que dans le bloc. .

Portée et cycle de vie variables en langage Go Portée et cycle de vie variables en langage Go Jun 01, 2023 pm 12:31 PM

Le langage Go est un langage open source à typage statique. Il présente les caractéristiques de simplicité, d'efficacité et de fiabilité et est de plus en plus apprécié par les développeurs. Dans le langage Go, les variables constituent la forme la plus élémentaire de stockage de données dans les programmes. La portée et le cycle de vie des variables sont très importants pour l'exactitude et l'efficacité du programme. La portée d'une variable fait référence à la visibilité et à l'accessibilité de la variable, c'est-à-dire à l'endroit où la variable est accessible. En langage Go, la portée des variables est divisée en variables globales et variables locales. Les variables globales sont des variables définies en dehors d'une fonction et peuvent être utilisées n'importe où dans l'ensemble du programme.

Portée des variables PHP 5.6 : Comment définir des variables statiques à l'aide d'un mot-clé static Portée des variables PHP 5.6 : Comment définir des variables statiques à l'aide d'un mot-clé static Jul 30, 2023 pm 11:02 PM

Portée de la variable PHP5.6 : Comment utiliser le mot-clé static pour définir des variables statiques En PHP, la portée d'une variable détermine la visibilité et la portée d'accès de la variable. Une variable statique est un type spécial de variable qui conserve sa valeur inchangée entre les appels de fonction. En PHP5.6 et versions ultérieures, vous pouvez utiliser le mot-clé static pour définir des variables statiques dans les fonctions et les méthodes de classe. Les caractéristiques des variables statiques sont les suivantes : la portée des variables statiques est limitée à la fonction ou à la méthode dans laquelle elles sont déclarées. Les variables statiques sont utilisées entre les appels de fonction ou de méthode

Comment définir la portée d'une variable dans la fonction Golang ? Comment définir la portée d'une variable dans la fonction Golang ? Apr 11, 2024 pm 12:27 PM

Dans Go, la portée de la fonction limite la visibilité des variables à la fonction où la variable est déclarée : Déclarez les variables dans une fonction : varnametype=value La portée est limitée au bloc de code déclaré et les autres fonctions ou blocs imbriqués ne peuvent pas accéder à ces variables.

Comment utiliser les variables en PHP Comment utiliser les variables en PHP May 20, 2023 pm 02:33 PM

PHP est un langage de développement Web très populaire qui permet aux développeurs de créer des applications Web dynamiques côté serveur. En PHP, une variable est une structure de données de base utilisée pour stocker des valeurs et des données. Cet article explique comment utiliser les variables en PHP. Syntaxe de base des variables La syntaxe de déclaration des variables en PHP est très simple. Les noms de variables commencent par un signe dollar ($), suivi du nom de la variable. Les noms de variables peuvent être une combinaison de lettres, de chiffres ou de traits de soulignement, mais ils doivent commencer par une lettre ou un trait de soulignement. Par exemple, le code suivant déclare un nom

Quelle est la portée variable de la fonction Golang Quelle est la portée variable de la fonction Golang Dec 22, 2023 pm 02:39 PM

La portée variable d'une fonction Golang fait référence à la visibilité et au cycle de vie des variables à l'intérieur de la fonction. Selon la position et la portée des variables dans la fonction, les variables peuvent être divisées en trois types : variables locales, variables de paramètre et variables de valeur de retour. Introduction détaillée : 1. Les variables locales sont des variables définies à l'intérieur d'une fonction et ne peuvent être utilisées qu'à l'intérieur de la fonction, leur portée est limitée à l'intérieur de la fonction, y compris tous les blocs de code et les blocs de code imbriqués de la fonction. paramètres d'entrée reçus par la fonction et pouvant être utilisés à l'intérieur de la fonction. Leur portée est limitée à l'intérieur de la fonction, etc.

Comment utiliser des variables superglobales en PHP Comment utiliser des variables superglobales en PHP May 20, 2023 pm 07:01 PM

Les variables superglobales en PHP font référence aux variables accessibles dans la portée globale. Chaque variable superglobale est un tableau associatif, qui contient de nombreuses variables prédéfinies en PHP, telles que $_GET, $_POST, $_COOKIE, etc. Ces variables superglobales sont très importantes dans le développement Web car elles constituent un moyen important d'obtenir des informations à partir des demandes des utilisateurs, telles que l'obtention de données de formulaire, l'obtention de paramètres d'URL, etc. Cet article présentera en détail les variables superglobales couramment utilisées en PHP, y compris leurs fonctions et comment les utiliser.

See all articles