在 JavaScript 中的函数之外使用局部变量
use local variables outside ther functions in javascript
我试过这个:
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
- Javascript用函数return替换局部变量
- 每次调用函数时,都要修改Javascript中的局部变量
- 创建所有原型函数均可访问的局部变量
- JavaScript:在调用之前将函数重新分配给局部变量,而不是直接调用并对'这'
- 函数中的局部变量
- Jquery:如何获取变量的局部外部函数
- 局部变量仍可通过函数访问
- 调用与局部变量同名的函数
- 尝试在 AngularJS 工厂中返回局部变量时如何避免函数表达式
- 将局部变量传递给另一个函数
- 函数是否像局部变量一样适用于全局变量
- 全局访问的 JavaScript 函数局部变量
- 为什么 javascript 会保留在外部函数中发生的局部变量重新分配,而不必捕获返回值
- 从另一个函数访问局部变量
- 在 JavaScript 中的函数之外使用局部变量
- 将局部变量从一个函数传递到另一个函数
- 函数回调、局部变量和 chrome.storage.sync.get
- 将一个函数中的局部变量返回给另一个函数
- 访问函数外部的局部变量
- 是否可以从函数外部访问函数的局部变量