[英]Local and global scope of variables in JavaScript
我曾尝试阅读有关该主题的其他文章,但还没有走运。 在下面的这段代码中,为什么f2()无法访问f1()中定义的var。 变量“名称”不是函数f2()的全局变量吗? f2()是否应该看到var“名称”?
function f1() {
var name = "david";
function f2() {
document.writeln(name);
}
document.writeln(name);
}
f2(); // does not write out "david".
您的f2()
仅在f1()
范围内定义。 你不能在全球范围内称呼它
Javascript是函数级范围的,而不是块范围的。 函数可以访问其父代的函数变量,但不能访问其内部函数中定义的变量。 您可以从f1返回f2并这样调用
function f1() {
var name = "david";
document.writeln(name);
return f2
function f2() {
document.writeln(name);
}
}
var f2 = f1();
f2();
您需要阅读Javascript闭包。
这是您的代码段的一个版本,该代码段演示了如何从内部函数中的外部函数访问变量(如果要全局调用内部函数)。
function f1()
{
var name = "david";
return function()
{
console.log(name);
}
}
var f2 = f1();
f2();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.