javascript全局变量在函数内部未定义

时间:2017-09-13 03:01:03

标签: javascript

由于某种原因,当某个时候设置为局部变量时,JavaScript全局变量在函数内部变得未定义。 例如,在下面的示例中,local经常变为“undefined”。 请问你们有人可以提供建议吗?

我希望“local”的值在functionB()functionC()doStringProcessingA()doStringProcessingB()中是“全局值”。 “local”的值为“undefined”。我确信没有其他地方可以在任何地方分配值或将undefined设置为全局。

我检查了下面的链接,但似乎没有关系。 'Hoisted' JavaScript VariablesWhy a variable defined global is undefined?

functionA()由来自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>

2 个答案:

答案 0 :(得分:0)

你能试试吗

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

我认为在你的代码中它从FunctioA获取局部变量, 你也可以用两种方式检查

1)打开控制台并通过在函数堆栈中的每个函数中添加一些日志消息来查看日志显示的错误

2)你可以使用闭包

答案 1 :(得分:0)

因为你的全局值是在一个函数A()下定义的所以当你直接调用一个函数B()或functionC()时,你的全局变量不包含任何值..所以为此你必须初始化全局变量的值..

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>