2017-09-13 54 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

尽管它不会得到“未定义”,但在这些函数中获得“全局值”并不一定。它可能会得到“地球”而不是“未定义”。 –