Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript:如何修复未捕获的引用错误?_Javascript - Fatal编程技术网

JavaScript:如何修复未捕获的引用错误?

JavaScript:如何修复未捕获的引用错误?,javascript,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

我了解到,每当我们不定义变量,只在函数中初始化它时,它就会被视为全局变量。我还了解到,变量总是在程序开始运行时首先定义的

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);正在给出未捕获的引用错误

请尝试下面的代码它正在工作-注意函数中的
var

var globalVariable=“这是一个全局变量”
函数fun(){
var localVariable=“现在这是一个局部变量”;
console.log(localVariable);//现在这是一个局部变量
}
乐趣();

控制台日志(全局变量)//这是一个全局变量(输出)
请尝试下面的代码它正在工作-注意函数中的
var

var globalVariable=“这是一个全局变量”
函数fun(){
var localVariable=“现在这是一个局部变量”;
console.log(localVariable);//现在这是一个局部变量
}
乐趣();

控制台日志(全局变量)//这是一个全局变量(输出)
很简单,可以查看您需要首先定义的任何变量的日志

var globalVariable=“这是一个全局变量”
函数fun(){
var localVariable=“这是一个局部变量”;
console.log(localVariable);//未捕获引用错误:未定义localVariable
}
乐趣();

控制台日志(全局变量)//这是一个全局变量(输出)
很简单,可以查看您需要首先定义的任何变量的日志

var globalVariable=“这是一个全局变量”
函数fun(){
var localVariable=“这是一个局部变量”;
console.log(localVariable);//未捕获引用错误:未定义localVariable
}
乐趣();

控制台日志(全局变量)//这是一个全局变量(输出)
首先,函数中定义的变量不是全局变量,而是局部变量


我认为您可能在定义localVariable之前调用了它。首先,函数中定义的变量不是全局变量,而是局部变量


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

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

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

我想这可能会让你感到困惑, 使用提升。解析器通读整个函数并执行任何变量声明,就像在作用域的开头一样。 但是您必须使用var关键字声明它,目前您只为它赋值

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

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

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

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

我想这可能会让你感到困惑, 使用提升。解析器通读整个函数并执行任何变量声明,就像在作用域的开头一样。 但是您必须使用var关键字声明它,目前您只为它赋值

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

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


您在初始化它之前正在使用它您的
localVariable
不是本地变量。嗯?因为localVariable实际上还没有定义。“每当我们不定义一个变量,只在函数中初始化它时,它就会被视为全局变量”-这对于任何理智的人来说都是一个引用错误,那些在严格模式下写的人。你在初始化它之前使用它你的
localVariable
不是一个局部变量。哈?因为localVariable实际上还没有定义。“每当我们不定义变量,只在函数中初始化它时,它就会被视为全局变量”——这对于任何理智的人来说都是一个引用错误,那些在严格模式下写作的人。这个答案和这个问题有什么不同?@aseempadhyay:one
var
他没有初始化本地变量你的答案是错误的。句号@Manesh@AseemUpadhyay你能详细说明一下吗?此代码没有因引用错误而崩溃。此答案与问题之间有什么不同?@aseempadhyay:one
var
他没有初始化本地变量您的答案是错误的。句号@Manesh@AseemUpadhyay你能详细说明一下吗?此代码不会因引用错误而崩溃。如果您没有像op在其代码中所做的那样使用var在函数中声明变量,则它是全局变量如果您没有像op在其代码中所做的那样使用var在函数中声明变量,则它是全局变量