不明白为什么此代码有效

use*_*537 5 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)
    }
  }
})()
Run Code Online (Sandbox Code Playgroud)

有用。但是我不明白的是这部分:

if (isIE && !lastclear) {    
    if ((time_now - lastclear) > 1000 * 60 * 60 * 24) {
      window.localStorage.clear()
      window.localStorage.setItem('myLocalStorage', time_now)
    }
  }
Run Code Online (Sandbox Code Playgroud)

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

T.J*_*der 10

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

不,是nullgetItem返回null不存在的条目。在数字方面,null胁迫到0,所以number - nullnumber - 0number

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

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