gpt4 book ai didi

javascript - 不明白为什么这段代码有效

转载 作者:数据小太阳 更新时间:2023-10-29 05:53:36 26 4
gpt4 key购买 nike

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

最佳答案

Here the lastclear is undefined, how does the calculation works then?

不,它是nullgetItem为不存在的条目返回 null。在数字上下文中,null 强制转换为 0,因此 number - nullnumber - 0编号

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

如果我正在编写代码,我不会依赖其中的 null 强制转换部分,尤其是因为它会绊倒代码的 future 读者(就像它绊倒你一样)。但这就是它起作用的原因。

关于javascript - 不明白为什么这段代码有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56974090/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com