日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

js中的局部变量和全局变量

發布時間:2024/8/26 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 js中的局部变量和全局变量 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

javascript有兩種變量:局部變量和全局變量。當然,我們這篇文章是幫助大家真正的區別這兩種變量。

首先,局部變量是指只能在本變量聲明的函數內部調用。全局變量時整個代碼中都可以調用的變量。當然,單單從字面上理解肯定是不清楚的,下面我詳細的介紹下:
大家都知道,變量是需要用var關鍵字聲明的。但是javascript中也可以隱式的使用變量,就是不用聲明,直接使用。而且,千萬注意,javascript把隱式聲明的變量總是當成全局變量來使用的。
例如:

復制代碼 代碼如下:

function myName() {
i = 'abc';
}
myName();
function sayName() {
alert(i);
}
sayName();

輸出結果為:abc

這說明變量i就是一個全局的變量,如果把上面的代碼改成如下:

復制代碼 代碼如下:

function myName() {
var i='abc';
}
myName();
function sayName() {
alert(i);
}
sayName();

此時,游覽器將沒有任何輸出結果,因為i 是在函數myName中定義的,所以它只是myName的局部變量,不可能被外部調用。

現在再回過頭來看下面的代碼:

復制代碼 代碼如下:

function myName() {
i = 'abc';
}
myName();
function sayName() {
alert(i);
}
sayName();

現在,我們進行一下改動,把myName();去掉,代碼如下:

復制代碼 代碼如下:

function myName() {
i = 'abc';
}
function sayName() {
alert(i);
}
sayName();

此時,游覽器也不會有如何反應。因為雖然i是全局變量,但是函數myName()并沒有被調用,所以就相當于雖然聲明了i,但是并沒有給i賦予任何的值,所以沒有任何輸出。
同理,如果把上例改成:

復制代碼 代碼如下:

function myName() {

i = 'abc';
}
function sayName() {
alert(i);
}
sayName();
myName();

這種情況下還是不會輸出任何結果,javascript代碼的執行時從上到下的,在sayName()函數被調用時會檢查變量i的值,此時函數myName尚未執行,也就是說i還沒有被賦值,所以不會輸出任何結果。

為了方便大家更好的理解,這里再舉一個例子:

復制代碼 代碼如下:

var i = 'abc';
function myloveName() {
i = 'a';
}
myloveName();
function myName() {
alert(i);
}
myName();

這次的結果是什么呢?
答案是a
首先,i的原始值是abc,但是當調用myloveName()函數之后,將i的值改為a,所以最后的輸出結果是a。

如果將代碼改為:

復制代碼 代碼如下:

var i = 'abc';
function myloveName() {
var i = 'ai';
}
myloveName();
function myName() {
alert(i);
}
myName();

此時的結果就是abc了,因為代碼中的兩個i不一樣,一個是全局的,一個是局部的,也可以這樣理解,雖然兩個i的名字一樣,但是這兩個i的本質卻不一樣,好像有兩個名字一樣的人一樣,雖然名字一樣,但卻不是同一個人。

如果將代碼改造成這樣:

復制代碼 代碼如下:

var i = 'abc';
function myloveName() {
i = 'ai';
}
function myName() {
alert(i);
}
myName();
myloveName();

相信大家可以自己算出結果了,結果是abc。

既然函數內部可以調用全局變量,那么下面這種情況呢:

復制代碼 代碼如下:

var i = 'abc';
function myloveName() {
i = 'a';
alert(i);
}
myloveName();

此時變量的值是哪個呢?

我們來分析下:

首先全局變量i被賦值為:abc。

接下來myloveName()函數被調用,全局變量i被重新賦予新的值:a

所以結果肯定是:a

如果我們把alert提前呢,像這樣:

復制代碼 代碼如下:

var i = 'abc';
function myloveName() {
alert(i);
i = 'a';
}
myloveName();

這時候結果是什么呢?
經過驗證結果是:undefined
如果代碼是這樣呢:

復制代碼 代碼如下:

var i = 'abc';
function myloveName() {
alert(i);
}
myloveName();

此時i的結果是:abc

為什么會發生上面undefined情況,因為代碼的執行順序是從上到下的,在輸出i之前并沒有對i定義。所以從這里可以看出,使用代碼的時候,變量的聲明一定要放到代碼的前面,以避免出現類似的問題!

同理:

復制代碼 代碼如下:

var i = 'abc';
function myloveName() {
alert(i);
var i = 'a';

}
myloveName();

這種情況下也會輸出:undefined

好了,關于變量我只有這么多的介紹了,相信這些任何人都可以看明白。不管代碼如何復制,其核心是不會變的。

轉載于:https://www.cnblogs.com/yedliu/p/6517572.html

總結

以上是生活随笔為你收集整理的js中的局部变量和全局变量的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。