如果用户的浏览器是IE,并且localStorage尚不存在,则以下代码将设置localStorage,其有效期为24小时。
(function ieAlert() {
var lastclear = window.localStorage.getItem('myLocalStorage'),
time_now = (new Date()).getTime();
var isIE = document.documentMode
if (isIE && !lastclear) {
if ((time_now - lastclear) > 1000 * 60 * 60 * 24) {
window.localStorage.clear()
window.localStorage.setItem('myLocalStorage', time_now)
}
}
})()
有效。 但是我不明白的是这部分:
if (isIE && !lastclear) {
if ((time_now - lastclear) > 1000 * 60 * 60 * 24) {
window.localStorage.clear()
window.localStorage.setItem('myLocalStorage', time_now)
}
}
这里lastclear
是未定义的,那么计算如何进行?
答案 0 :(得分:10)
这里
lastclear
是未定义的,那么计算如何进行?
否,它是null
。对于不存在的条目,getItem
返回null
。在数字上下文中,null
强制为0
,因此number - null
为number - 0
为number
。
(而如果原始作者以另一种方式访问localStorage.myLocalStorage
,则该值的确应为undefined
,而>
则不会起作用,因为{{1} }是number - undefined
,并且与NaN
的所有比较都会产生NaN
。)
如果我正在编写代码,则不会依赖其中的false
强制性部分,这尤其是因为它会使将来的代码阅读者绊倒(因为它使您绊倒了)。但这就是它起作用的原因。