不明白为什么此代码有效

时间:2019-07-10 15:33:07

标签: javascript local-storage

如果用户的浏览器是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是未定义的,那么计算如何进行?

1 个答案:

答案 0 :(得分:10)

  

这里lastclear是未定义的,那么计算如何进行?

否,它是null。对于不存在的条目,getItem返回null。在数字上下文中,null强制为0,因此number - nullnumber - 0number

(而如果原始作者以另一种方式访问​​localStorage.myLocalStorage,则该值的确应为undefined,而>则不会起作用,因为{{1} }是number - undefined,并且与NaN的所有比较都会产生NaN。)

如果我正在编写代码,则不会依赖其中的false强制性部分,这尤其是因为它会使将来的代码阅读者绊倒(因为它使您绊倒了)。但这就是它起作用的原因。