JavaScript:如何修复未捕获的参考错误?

时间:2018-07-13 09:08:26

标签: javascript

我了解到,只要我们不定义变量,而仅在函数中对其进行初始化,则将其视为全局变量。我也了解到,总是在程序开始运行时首先定义变量。

var globalVariable = "This is a global variable";

function fun(){
localVariable = "This is a local Varible";
console.log();
console.log();

}

console.log(localVariable);//This is a local Varible(Ouput)
console.log(globalVariable);//This is a global variable(Output)

上面的代码似乎运行良好,但是我对下面代码的输出感到困惑,我试图清除我的概念。

var globalVariable = "This is a global variable"
function fun(){
console.log(localVariable); //Uncaught ReferenceError: localVariable is not defined

localVariable = "This is a local Varible";

}
fun();

console.log(globalVariable);//This is a global variable(Output)

我不确定为什么console.log(localVariable);出现未捕获的刷新错误

4 个答案:

答案 0 :(得分:1)

尝试下面的代码,它可以正常工作-注意函数内的var

var globalVariable = "This is a global variable"

function fun() {

  var localVariable = "NOW this is a local Variable";

  console.log(localVariable); //now this is a local variable

}
fun(); 

console.log(globalVariable); //This is a global variable(Output)

答案 1 :(得分:1)

其他人关于变量范围的说法是正确的,但我想补充一件事。

  

“我了解到,总是在程序开始运行时首先定义变量。”

我认为这可能引起您的困惑, JavaScript使用吊装。解析器通读整个函数并执行所有变量声明,就像在作用域的开头一样。 但是您必须使用var关键字来声明它,当前您仅为其分配了一个值。

例如,尽管声明是在使用变量之后进行的,但这仍然有效

x = 5; 
elem = document.getElementById("demo"); 
elem.innerHTML = x;                    
var x;

答案 2 :(得分:0)

简单以便查看您首先需要定义的任何变量的日志。

var globalVariable = "This is a global variable"
function fun(){

var localVariable = "This is a local Varible";
console.log(localVariable); //Uncaught ReferenceError: localVariable is not defined

}
fun();

console.log(globalVariable);//This is a global variable(Output)

JavaScript变量是用于存储数据值的容器。所有JavaScript变量必须使用唯一的名称标识。这些唯一的名称称为标识符。因此,首先您需要确定哪个标识符代表什么,然后只有您才能查看结果。

答案 3 :(得分:0)

首先,在函数中定义的变量不是全局变量,而是局部变量。

我认为您可能在定义localVariable之前就在调用它。先定义它,然后执行console.log()。