如何用Javascript编写以下代码?我希望声明一个可以在任何页面中访问的变量。我可以在剃刀代码中声明一个变量,但我不知道如何在javascript中编写它。是否可以在javascript中声明这样的变量?
@{
App.VariableName = "some string values";
}
答案 0 :(得分:2)
我希望声明一个可以在任何页面中访问的变量。
如果您的意思是,您的网站/应用中的任何网页,您可以使用web storage:如果值应在会话之间存在,则使用本地存储,如果不存在,则使用会话存储。
如果您只想存储字符串,那很简单:
// Setting the string, whenever you want to remember it
localStorage.variableName = "some string";
// Getting the string, probably on page load
var theString = localStorage.variableName;
// `theString` will be `null` if `variableName` didn't exist in storage
// for this site
这些仅限于字符串,因此人们通常将它们与JSON结合使用。在页面加载:
var storedStuff = JSON.parse(localStorage.myStuff || "null") || {
// Default values here for when we don't have stored stuff yet
variableName: "some stuff"
};
然后每当您更改storedStuff.variableName
时(或每当您想保存更改时):
localStorage.myStuff = JSON.stringify(storedStuff);
对于会话存储,只需将上面的localStorage
更改为sessionStorage
。
成语
var storedStuff = JSON.parse(localStorage.myStuff || "null") || {
// Default values here for when we don't have stored stuff yet
variableName: "some stuff"
};
可能会使用一些解释:
如果我们尝试检索本地存储中不存在的内容,我们会返回null
。 JavaScript有一个curiously-powerful ||
operator:它不是返回一个布尔值,而是返回左手参数,如果该参数是真实的,否则返回它的右手参数。因此localStorage.myStuff || "null"
将是来自本地存储的字符串,或者如果没有,则为字符串"null"
。
然后我们解析结果,它是我们之前存储的序列化数组或字符串"null"
。虽然字符串"null"
不是有效的JSON文档,但 是有效的JSON 片段,并且JSON.parse
已记录为可接受片段。因此,解析的结果要么是我们先前存储的数组,要么是null
。
然后我们再次使用奇怪强大的||
运算符来选择反序列化结果和其中包含默认值的对象({...}
)。因此,如果我们反序列化null
,我们将选择具有默认值的对象;如果我们反序列化一个对象,我们将选择它。
答案 1 :(得分:0)
如果您的浏览器支持它,您可以使用localStorage或sessionStorage在页面之间存储变量 - 有关详细信息和兼容性表,请参阅https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Storage。
可以这样使用:
localStorage["mydata"] = myvariable;
var dataFromStorage = localStorage["mydata"];
关闭浏览器后,本地存储将保留数据,会话存储将仅持续该浏览器会话。