缓存未定义错误

时间:2014-03-01 12:04:59

标签: javascript

function example(str) {
 var cache = ( str != "" ) ? str : null;
}

example("something");
alert(cache); // cache is not defined

警告时,表示未定义缓存。如何使它在调用函数后,将保存缓存,我可以像alert(缓存)一样调用它。

4 个答案:

答案 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)

cachelocal 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);