function example(str) {
var cache = (str != "") ? str : null;
}
example("something");
alert(cache); // cache is not defined
在警報狀態時,表示緩存未定義。如何做到這一點,以便在調用函數之後,緩存將被保存,並且可以像alert(緩存)那樣調用它。緩存未定義錯誤
function example(str) {
var cache = (str != "") ? str : null;
}
example("something");
alert(cache); // cache is not defined
在警報狀態時,表示緩存未定義。如何做到這一點,以便在調用函數之後,緩存將被保存,並且可以像alert(緩存)那樣調用它。緩存未定義錯誤
自我記憶功能更加舒適
背誦是建設一個功能就是能夠 記住其先前計算值的過程。這可以通過避免已經執行的不必要的複雜計算來顯着提高性能。
function foo(str) {
if (!foo.cache) {
foo.cache = (typeof str !== undefined) ? str : null;
}
}
foo("something");
alert(foo.cache);
變量'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);
,或者如果他可以擺脫'cache' VAR和使用'return'代替http://jsfiddle.net/xfmj2/ –
大多數肯定可以做許多事情。我的鏈接突出顯示了幾個常規選項。 –
定義cache
外function exmaple()
var cache;
function example(str) {
cache = (str != "") ? str : null;
}
當你在函數內部定義了函數的作用域,所以你不能從你的函數的外部訪問cache
。
cache
是local
變量爲example
function
。我建議使用namespace
而不是global
variable
。如果它不會是一個全局變量,可以自由使用經典的var
聲明。
這樣:
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)
PS:我建議使用console.log()
(或debug
),而不是alert()
。它比alert()
一個很好的答案,但有點矯枉過正的權利? foo在這裏記住什麼是什麼價值?記憶是爲了表現而不是基本的價值傳遞。不過,另一種有趣的分享狀態的方式。 –