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樓:

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

全域性變數和區域性變數的區別,全域性變數 靜態全域性變數 靜態區域性變數和區域性變數的區別

墨汁諾 一 用途不同 全域性變數 描述物件有什麼 在類中定義 類中所有方法都可以使用。區域性變數 臨時儲存資料 在類的方法中定義 只能在當前方法中使用。二 使用不同 全域性變數 整個類中可用 區域性變數 該方法內可用 三 初始值不同 全域性變數 有初始值 區域性變數 無初始值 擴充套件資料 使用全域...

全域性變數和static全域性變數的區別

安三羊舌凝然 static修飾的成員變數,在類載入的時候就會分配空間,從屬於類,所有的物件共享這一個變數 而普通的成員變數從屬於物件,每個物件都有自己的變數 旁丹聞晴霞 你說的普通全域性變數指的是包含在 塊中的?中,static 與 中 的區別在於static在例項化時只能被執行一次,比如定義stu...

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

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