我试着阅读了其他关于这个主题的帖子,但还没有成功。在下面的代码中,为什么f2()不能访问f1()中定义的变量。变量“名称”不是f2()函数的全局变量吗?f2()不应该看到变量"name“吗?
function f1() {
var name = "david";
function f2() {
document.writeln(name);
}
document.writeln(name);
}
f2(); // does not write out "david".
发布于 2012-12-14 18:56:42
您的f2()
仅在f1()
范围内定义。你不能全局调用它
发布于 2012-12-14 19:04:58
Javascript是函数级作用域,而不是块作用域。一个函数可以访问它的父函数变量,但不能访问它的函数中定义的变量。您可以从f1返回f2并以这种方式调用它
function f1() {
var name = "david";
document.writeln(name);
return f2
function f2() {
document.writeln(name);
}
}
var f2 = f1();
f2();
发布于 2012-12-14 18:59:23
您需要阅读有关Javascript闭包的知识。
这是您的代码片段的一个版本,它演示了如何从内部函数中的外部函数访问变量(如果您想全局调用内部函数)。
function f1()
{
var name = "david";
return function()
{
console.log(name);
}
}
var f2 = f1();
f2();
https://stackoverflow.com/questions/13884655
复制相似问题