2017-09-13 106 views
2

由於某種原因,某些JavaScript全局變量在某些時候設置爲局部變量時會變得未定義。 例如,在以下示例中,local通常會變成「undefined」。 你們中的任何人都可以請指教嗎?JavaScript全局變量undefined函數內部有時

我期待的「local」的值是「全球價值」的functionB()functionC()doStringProcessingA()doStringProcessingB()。 「local」的值是「undefined」。我確定沒有其他地方可以在任何地方分配值或設置爲全局。

我檢查了下面的鏈接,但它似乎沒有關係。 'Hoisted' JavaScript VariablesWhy a variable defined global is undefined?

泛函()由從HTML onClick事件調用。

var global; 

function functionA(){ 
    global = "global value"; 
} 

function functionB(){ 
    var local = global;  
    doStringProcessingA(local); 
} 

function functionC(){ 
    var local = global;  
    doStringProcessingB(local); 
} 

<div onclick="functionA()"> 
    <span class="Text">Submit</span> 
</div> 
+3

您的'全局'變量沒有被賦予全局任何值。它從'functionA'中獲得它的值。確保先調用'functionA',然後調用其他函數,這些函數使用'global'變量的值。 –

+0

我無法完全解析你的英語。你說全局變量變得不確定?當你說「設置爲局部變量的全局變量」時,你的意思是「全局變量,當該全局變量被賦予局部變量的值」還是「全局變量,當局部變量變量賦值時」?請注意,與許多其他語言不同,「設置A到B」的英文意思是「更改A的值,使其現在具有B的值」,而不是「取A的值並將其置於(設置)INTO B」。 – 2017-09-13 03:08:16

+0

我期待在函數B和函數C或doStringProcessingA和doStringProcessingB中「本地」的值是「全局值」。 「本地」的值是「未定義的」。我確定沒有其他地方可以在任何地方分配值或設置爲全局。 –

回答

0

你可以試試這個

Var global = "text"; 
function functA{ 
    Var lol = global; 
    dostringprocess(local); 
    } 

我想在你的代碼是採取從FunctioA, 局部變量,你也可以用兩種方式

1)打開控制檯檢查,看看通過在函數堆棧中的每個函數中放入一些日誌消息來記錄它顯示的錯誤是什麼錯誤

2)您可以使用關閉

0

因爲您的全局值是在函數A()下定義的,所以當您直接調用函數B()或函數C()時,您的全局變量不包含任何值..因此,您必須初始化全局值可變..

var global="Earth";      // now it will not give any errror 

function functionA(){ 
    global = "global value"; 
} 

function functionB(){ 
    var local = global;  
    doStringProcessingA(local); 
} 

function functionC(){ 
    var local = global;  
    doStringProcessingB(local); 
} 

<div onclick="functionA()"> 
    <span class="Text">Submit</span> 
</div> 
+0

儘管它不會得到「未定義」,但在這些函數中獲得「全局值」並不一定。它可能會得到「地球」而不是「未定義」。 –