在 JavaScript 中的函数之外使用局部变量

use local variables outside ther functions in javascript

本文关键字:局部变量 函数 JavaScript      更新时间:2023-09-26

我试过这个:

function a_function(){   
    var data = "information";      
});
console.log(data);
你不能

。您需要在该范围之外创建一个变量并分配给它:

var data;
function a_function(){   
    data = "information";      
});
a_function();
console.log(data);

另一个答案已经发布,提到学习范围。遵循该建议并尝试尽早解决它,这将在未来为您节省很多麻烦。

从技术上讲,你可以,尽管这通常不是一个好主意

function a_function() {
    data = "information";
}
a_function();
console.log(data);

这样做的原因是,通过使用 var 关键字来声明变量,JavaScript(它是很好的小动态语言)正在写入"当前"对象的 data 属性,该属性window 。 因此,全球可访问。 这基本上相当于这样做:

function a_function() {
    window['data'] = "information";
}
a_function();
console.log(window['data']);

正如我所说,这通常不是一个好主意。 其他方法包括返回值:

function a_function() {
    var data = "information";
    return data;
}
var data = a_function();
console.log(data);

或者也许在更大的范围内创建值并在函数中设置它:

var data;
function a_function() {
    data = "information";
}
a_function();
console.log(data);

基本上,通常您希望维护范围和控制流,并尽可能避免使用"全局"。

您需要

阅读有关范围及其工作原理的信息。

http://www.w3schools.com/js/js_scope.asp

https://en.wikipedia.org/wiki/Scope_%28computer_science%29#JavaScript

例如,在函数中声明的变量仅存在于此函数中。一旦你超出了这个范围,变量就会被删除,所以它是未定义的

你必须将值传递给 console.log() 调用共享范围内的变量,如下所示:

var data;
function a_function(){   
    //note the ommission of the 'var' keyword
    data = "information";      
});
a_function();
console.log(data);

或者你必须让函数返回值并将其用作 log() 方法的输入:

function a_function(){   
    var data = "information";
    return data;
}
console.log(a_function());

或者将 console.log() 调用包装在函数从其作用域内调用的帮助程序函数中,将数据作为参数传递:

function log(data){
     console.log(data);
}
function a_function(){   
    var data = "information";
    log(data);
}

编辑:正如其他人所提到的,虽然我们可以告诉您所有方法,但最好更多地了解范围并了解为什么人们建议的方法有效。

如果你想封装data但在函数a_function之外使用它,你需要返回data并调用a_function。这样的事情应该有效:

function a_function() {
  var data = "information";
  return data;
};
var data = a_function();

请注意,由于作用域的原因,函数内部data与函数外部data不同。如果不在函数外部创建名为 data 的新 var,则无法访问data,因为它在外部作用域中不存在。

以下代码演示了作用域:

function a_function() {
  var data = "information";
  return data;
};
var data = "different information";
var data2 = a_function();
console.log(data);
console.log(data2);

代码的输出将产生:

different information
information