如果不将函数中的变量从函数中删除,我如何在函数中使变量可用,并将它们记录在控制台中?
function foo(){
var one = 1;
var two = 2;
}
foo();
console.log(one, two);
答案 0 :(得分:4)
要访问函数外部的变量,可以在函数外部声明它们。该功能仍然可以分配给他们。
var one, two;
function foo(){
one = 1;
two = 2;
}
foo();
console.log(one, two);
或者,如果您只需要这些值,您可以让函数返回它们。
function foo(){
var one = 1;
var two = 2;
return { one: one, two: two };
}
var result = foo();
console.log(result.one, result.two);
答案 1 :(得分:1)
解决方案:
#' Generate ggplot2 aesthetic mappings from data.frame columns
#'
#' Use this like you would \code{aes()} or \code{aes_string()} but
#' pass in the \code{data.frame} you want to use for the mapping.
#' By default this will use all the column names from the input
#' \code{data.frame} so use column selections if you don't want
#' to map them all.
#'
#' @param df data.frame
aes_from_df <- function(df) {
mapping <- setNames(as.list(colnames(df)), colnames(df))
mapping <- lapply(mapping, function(x) {
if (is.character(x)) parse(text = x)[[1]] else x
})
structure(ggplot2:::rename_aes(mapping), class="uneval")
}
rect <- data.frame(xmin=1, xmax=10, ymin=1, ymax=10)
ggplot(rect, aes_from_df(rect)) + geom_rect()
示例:https://jsfiddle.net/xmm041df/1/
说明:
使用var时,您要为该范围声明变量。在你的情况下功能范围。
但是,如果未指定范围,则默认为最外层范围。在我们的案例窗口中。
虽然不建议这样做,并且污染了主要命名空间,这绝不是一个好主意。
答案 2 :(得分:0)
函数是一个对象,所以你可以这样做:
function foo(){
foo.one = 1;
foo.two = 2;
}
foo();
console.log(foo.one, foo.two);
或者,如果您希望将这些变量放在全局命名空间中,那么:
function foo(){
window.one = 1; // if in browser
window.two = 2;
}
foo();
console.log(one, two);
更新:window.
用于避免strict mode中的运行时错误。
答案 3 :(得分:0)
如果为尚未声明的变量赋值,它将自动成为GLOBAL变量。
// code here can use carName
function myFunction() {
carName = "Volvo";
// code here can use carName
}
答案 4 :(得分:0)
针对您的问题的示例javascript代码:
<script type="text/javascript" language="javascript">
TestFunction();
function TestFunction()
{
testVariableOne ="Value1";
testVariableSeond = 2;
FunctionToTestGlobalVariables(this);
};
function FunctionToTestGlobalVariables(callback)
{
alert("FirstGlobalVariable" + callback.testVariableOne);
alert("SecondGlobalVariable"+ callback.testVariableSeond);
// Or use like this since they are global now
//alert("FirstGlobalVariable" + testVariableOne);
//alert("SecondGlobalVariable"+ testVariableSeond);
};
</script>
从以下链接研究功能变量的范围。 参考:http://www.w3schools.com/js/js_scope.asp
var将范围限制为使用它的函数。所以不要使用var。
答案 5 :(得分:0)
使用window对象设置属性。
function foo()
{
window.one = 1;
window.two = 2;
}
foo();
console.log(one, two);