function example(str) {
var cache = ( str != "" ) ? str : null;
}
example("something");
alert(cache); // cache is not defined
警告时,表示未定义缓存。如何使它在调用函数后,将保存缓存,我可以像alert(缓存)一样调用它。
答案 0 :(得分:2)
变量'cache'在函数示例中定义,而不是在该范围之外,因此alert不能访问它。请查看其他类似问题,例如:https://stackoverflow.com/questions/22113894/variables-from-anonymous-function/22114051#22114051;不是10分钟前。我还建议阅读Javascript特别是变量范围如何工作。它与大多数编程语言非常相似,但在其他几个编程语言中非常类似,例如:http://msdn.microsoft.com/en-us/library/bzt2dkta(v=vs.94).aspx
不推荐,但快速回答是:
var cache;
function example(str) {
cache = ( str != "" ) ? str : null;
}
example("something");
alert(cache);
答案 1 :(得分:2)
cache
是local
example
的{{1}}变量。我建议使用function
代替namespace
global
。如果它不是全局变量,可以自由使用经典的variable
声明。
所以:
var
ps:我建议使用var app = app || {}; //define namespace
app.cache = "";
function example(str) {
app.cache = str != "" ? str : null;
//i guess it should equal to:
// cache = str ? str : null;
}
console.log(str); //similar to alert, but logs in developers tool (chrome) or firebug(FFx)
(或console.log()
)代替debug
。它比alert()
答案 2 :(得分:1)
在cache
function exmaple()
var cache;
function example(str) {
cache = ( str != "" ) ? str : null;
}
当您在函数内部定义时,它的范围将在其中完成,因此您无法从函数外部访问cache
。
答案 3 :(得分:1)
自我记忆功能
记忆是构建能够实现的功能的过程 记住它以前计算的值。这可以显着增加 通过避免不必要的复杂计算来实现性能 已经完成了。
function foo(str) {
if (!foo.cache) {
foo.cache = ( typeof str !== undefined ) ? str : null;
}
}
foo("something");
alert(foo.cache);