js全域性變數無效,JS中全域性變數不能被函式讀取嗎?

時間 2021-07-08 21:56:08

1樓:匿名使用者

var online = new array();

//獲取qq號

var uin;

$(document).ready(function() );

});alert(uin);// 所以到這裡沒有負值操作document.write('

2樓:半緣修道半緣女

js全域性變數無效原因:

①如果在函式體外,帶var和不帶var都是全域性變數。

②如果在函式體內,帶var的是區域性變數,執行結束後就會銷燬。而不帶var的依然是全域性變數,屬於window物件。

③帶var的全域性變數是立刻在記憶體中建立一塊區域儲存這個值,所以在js解析的時候會前置到最前面。而如果不帶var,只能執行到此處的時候,再去查詢所有的全域性變數有沒有宣告,如果沒宣告才去建立記憶體區域儲存這個值。

3樓:匿名使用者

把變數定義放在$(document).ready(function(){}裡面

js中全域性變數不能被函式讀取嗎?

4樓:育知同創教育

區域性變數是函

bai數內部定義du的變數,其作用zhi域是所在的函式

dao。如果函式外專還有一個跟區域性變屬

量名字一樣的變數,

程式會認為它們兩個是完全不同的兩個變數。當退出函式的時候,其中的區域性變數就同時被清除。

全域性變數是定義在所有函式以外的變數,其作用域是整個php檔案,但是在使用者自定義的函式內部是無法使用的。

如果一定要在使用者自定義的函式內部使用全域性變數,那麼就需要使用global關鍵字宣告。

也就是說如果在函式內的變數前加上golbal來修飾,那麼函式內部就可以訪問到這個全域性變數,

不僅可以利用這個全域性變數進行運算而且可以對這個全域性變數進行重新賦值。

5樓:返銷許

可以。2種問題 下邊直接上**.

1.// 全域性變數和區域性變數的變數名相同

輸出結果依次為:

第一次輸出

第二次輸出

2.//第二種情況只有全域性變數

第一次輸出:

第二次輸出:

js定義全域性變數要不要加var

6樓:解答小博士

1.在函式作用域內 加var定義的變數是區域性變數,不加var定義的就成了全域性變數。

使用var定義

var a = 'hello world';

function bb()

bb() // 'hello bill'

console.log(a); // 'hello world'

不使用var定義

var e = 'hello world';

function cc()

cc() // 'hello bill'

console.log(e) // 'hello bill'

2.在全域性作用域下,使用var定義的變數不可以delete,沒有var 定義的變數可以delete.也就說明隱含全域性變數嚴格來說不是真正的變數,而是全域性物件的屬性,因為屬性可以通過delete刪除,而變數不可以。

3.使用var 定義變數還會提升變數宣告,即

使用var定義:

function hh()

hh() //undefined

不使用var定義:

function hh()

hh() // 'a is not defined'

這就是使用var定義的變數的宣告提前。

4.在es5的'use strict'模式下,如果變數沒有使用var定義,就會報錯。

7樓:weijian周

具體要看這個變數你是怎麼用,如果說你是直接訪問時就要用到這個變數那就必須加

不加var的變數是在呼叫函式時用到它,它才會變成全域性變數!

關於js全域性變數的問題

8樓:小凡_達人

您好:目測第一個結果應該會出錯,第二個是undifind.首先明確變數宣告中帶var和不帶的區別。

①如果在函式體外,帶var和不帶var都是全域性變數。

②如果在函式體內,帶var的是區域性變數,執行結束後就會銷燬。而不帶var的依然是全域性變數,屬於window物件。

③帶var的全域性變數是立刻在記憶體中建立一塊區域儲存這個值,所以在js解析的時候會前置到最前面。而如果不帶var,只能執行到此處的時候,再去查詢所有的全域性變數有沒有宣告,如果沒宣告才去建立記憶體區域儲存這個值。

由此,你第一張圖中,x=3中,執行到abc()呼叫的時候,alert(x)中的x在window物件中還沒有宣告,應該會出現x未定義的錯誤。你可以試一下,把x=3放到abc()之前,就可以得到正確結果3了。因為這樣,abc呼叫之前,x=3已經宣告並且分配了記憶體值。

圖二中,在上面③中已經說明,帶var的在執行時候會將宣告會前置,所以解析器解析時候的**就變成了:

var x;

funtion abc()

abc();

x=3;

所以圖2的結果,宣告瞭,但是未賦值,所以結果是undifind.

但是,雖然js中允許宣告不帶var的變數,但是為了**的可維護,可讀性更好。建議都加var。不帶的話可能會給window增加一些很亂的物件。不利於以後維護。

9樓:匿名使用者

上面2中寫法都是不正確的。正確寫法是:

function abc()

var x=3; //先設定x值

abc();

10樓:超大蒲公英

var x是宣告性的,會在最初就執行。

x=3是執行性的,會按順序執行。

你這第一段,會報錯x未定義

第二段,能彈出來,但x沒有值,是undefined

11樓:

不管怎樣,變數應該先定義再呼叫

js中為什麼全域性變數在方法中無法使用

我相信大多數人都是把提到裡面去,這樣以來格式工整,心情舒暢,強迫症患者酣暢淋漓。但是不幸的是html 執行順序是自頂向下的,如果你只是定義普通的變數型別倒無所謂,一旦涉及到element就慘了,裡的元素還沒被載入出來,js語句就已經執行完了。然後你測試就會發現,你定義的元素變數,全部返回null,根...

c 全域性變數的問題,C 如何宣告全域性變數

定義應該放在。cpp檔案中。標頭檔案中是。extern 宣告,不是定義。定義放在標頭檔案,那包含此標頭檔案的。cpp都定義了此變數了,還不是多重定義嘛。你將你定義的全域性變數改為靜態的試試。應該是變數的鏈結性問題!如何在c 中設定全域性變數?1 首先,定義乙個實現加法運算自定義函式。2 接著,定義乙...

全域性變數的使用問題,全域性變數的使用注意

1,使用全域性變數會占用更多的記憶體 因為其生命期長 不過在計算機配置很高的今天,這個不稱為什麼問題,除非使用的是巨大物件的全域性變數,能避免就一定要避免。2,使用全域性變數程式執行時速度更快一些 因為記憶體不需要再分配 同樣也快不了多少。3,對於區域性變數的名字空間汙染,這個在不使用太多變數時是可...