Heim Web-Frontend js-Tutorial 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);//输出:局部变量
}
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Zwei -Punkte -Museum: Alle Exponate und wo man sie finden kann
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie wird der Variablenumfang einer PHP-Funktion bestimmt? Wie wird der Variablenumfang einer PHP-Funktion bestimmt? Apr 16, 2024 pm 04:51 PM

Der Variablenbereich in PHP ist in lokalen (innerhalb der Funktion), globalen (zugänglich innerhalb des Programms) und Klassenbereich (zugänglich innerhalb der Klasseninstanz) unterteilt. Das Schlüsselwort global kann lokale Variablen als globale Variablen deklarieren, und das Schlüsselwort static kann lokale Variablen als statische Variablen deklarieren und ihre Werte zwischen Funktionsaufrufen beibehalten.

Vertiefendes Verständnis des Golang-Funktionslebenszyklus und des Variablenumfangs Vertiefendes Verständnis des Golang-Funktionslebenszyklus und des Variablenumfangs Apr 19, 2024 am 11:42 AM

In Go umfasst der Funktionslebenszyklus Definition, Laden, Verknüpfen, Initialisieren, Aufrufen und Zurückgeben; der Variablenbereich ist in Funktionsebene und Blockebene unterteilt. Variablen innerhalb einer Funktion sind intern sichtbar, während Variablen innerhalb eines Blocks nur innerhalb des Blocks sichtbar sind .

Variabler Umfang und Lebenszyklus in der Go-Sprache Variabler Umfang und Lebenszyklus in der Go-Sprache Jun 01, 2023 pm 12:31 PM

Die Go-Sprache ist eine statisch typisierte Open-Source-Sprache. Sie zeichnet sich durch Einfachheit, Effizienz und Zuverlässigkeit aus und erfreut sich zunehmender Beliebtheit bei Entwicklern. In der Go-Sprache sind Variablen die grundlegendste Form der Datenspeicherung in Programmen. Der Umfang und der Lebenszyklus von Variablen sind für die Korrektheit und Effizienz des Programms sehr wichtig. Der Gültigkeitsbereich einer Variablen bezieht sich auf die Sichtbarkeit und Zugänglichkeit der Variablen, also darauf, wo auf die Variable zugegriffen werden kann. In der Go-Sprache ist der Variablenbereich in globale Variablen und lokale Variablen unterteilt. Globale Variablen sind außerhalb einer Funktion definierte Variablen und können überall im gesamten Programm verwendet werden

PHP 5.6-Variablenbereich: So definieren Sie statische Variablen mit dem Schlüsselwort static PHP 5.6-Variablenbereich: So definieren Sie statische Variablen mit dem Schlüsselwort static Jul 30, 2023 pm 11:02 PM

PHP5.6-Variablenbereich: So verwenden Sie das Schlüsselwort static zum Definieren statischer Variablen. In PHP bestimmt der Bereich einer Variablen die Sichtbarkeit und den Zugriffsbereich der Variablen. Eine statische Variable ist eine spezielle Art von Variable, deren Wert zwischen Funktionsaufrufen unverändert bleibt. In PHP5.6 und höher können Sie das Schlüsselwort static verwenden, um statische Variablen innerhalb von Funktionen und Klassenmethoden zu definieren. Die Merkmale statischer Variablen sind: Der Umfang statischer Variablen ist auf die Funktion oder Methode beschränkt, in der sie deklariert wird. Statische Variablen werden zwischen Funktions- oder Methodenaufrufen verwendet

Wie definiere ich den Variablenbereich in der Golang-Funktion? Wie definiere ich den Variablenbereich in der Golang-Funktion? Apr 11, 2024 pm 12:27 PM

In Go beschränkt der Funktionsbereich die Sichtbarkeit von Variablen auf die Funktion, in der die Variable deklariert ist: Variablen innerhalb einer Funktion deklarieren: varnametype=value Der Gültigkeitsbereich ist auf den deklarierten Codeblock beschränkt, und andere Funktionen oder verschachtelte Blöcke können nicht auf diese Variablen zugreifen.

So verwenden Sie Variablen in PHP So verwenden Sie Variablen in PHP May 20, 2023 pm 02:33 PM

PHP ist eine sehr beliebte Webentwicklungssprache, die es Entwicklern ermöglicht, dynamische Webanwendungen auf der Serverseite zu erstellen. In PHP ist eine Variable eine grundlegende Datenstruktur, die zum Speichern von Werten und Daten verwendet wird. In diesem Artikel wird die Verwendung von Variablen in PHP vorgestellt. Grundlegende Syntax von Variablen Die Syntax zum Deklarieren von Variablen in PHP ist sehr einfach. Variablennamen beginnen mit einem Dollarzeichen ($), gefolgt vom Variablennamen. Variablennamen können eine Kombination aus Buchstaben, Zahlen oder Unterstrichen sein, sie müssen jedoch mit einem Buchstaben oder einem Unterstrich beginnen. Der folgende Code deklariert beispielsweise einen Namen

Was ist der variable Umfang der Golang-Funktion? Was ist der variable Umfang der Golang-Funktion? Dec 22, 2023 pm 02:39 PM

Der Variablenumfang einer Golang-Funktion bezieht sich auf die Sichtbarkeit und den Lebenszyklus von Variablen innerhalb der Funktion. Je nach Position und Umfang der Variablen in der Funktion können Variablen in drei Typen unterteilt werden: lokale Variablen, Parametervariablen und Rückgabewertvariablen. Detaillierte Einführung: 1. Lokale Variablen sind innerhalb einer Funktion definierte Variablen und können nur innerhalb der Funktion verwendet werden, einschließlich aller Codeblöcke und verschachtelten Codeblöcke der Funktion Eingabeparameter, die von der Funktion empfangen werden und innerhalb der Funktion verwendet werden können. Ihr Geltungsbereich ist auf das Innere der Funktion usw. beschränkt.

So verwenden Sie superglobale Variablen in PHP So verwenden Sie superglobale Variablen in PHP May 20, 2023 pm 07:01 PM

Superglobale Variablen in PHP beziehen sich auf Variablen, auf die im globalen Bereich zugegriffen werden kann. Jede superglobale Variable ist ein assoziatives Array, das viele vordefinierte Variablen in PHP enthält, wie z. B. $_GET, $_POST, $_COOKIE usw. warten. Diese superglobalen Variablen sind in der Webentwicklung sehr wichtig, da sie eine wichtige Möglichkeit bieten, Informationen aus Benutzeranfragen abzurufen, z. B. Formulardaten, URL-Parameter usw. abzurufen. In diesem Artikel werden die häufig verwendeten superglobalen Variablen in PHP ausführlich vorgestellt, einschließlich ihrer Funktionen und ihrer Verwendung.

See all articles