当未定义的否定时意外地为假

问题描述 投票:0回答:1
const isLogin = localStorage.getItem('loginInfos')
console.log(isLogin) // undefined

// but unbelievable!

const isLogin = localStorage.getItem('loginInfos')
console.log(!isLogin) // false

我尝试了很多次都找不到具体原因!

javascript undefined
1个回答
0
投票

我无法重现您的问题。

除非您在调用之前存储了未定义的变量,否则您不会获得未定义的值。

我必须使用jsfiddle,因为SO不允许窗口存储

https://jsfiddle.net/mplungjan/4nsuk159/

let counter = 0;

function generateUniqueKey() {
  const timestamp = Date.now();
  counter++;
  return `${timestamp}-${counter}`;
}

const key1 = generateUniqueKey();
const key2 = generateUniqueKey();

let isLogin1 = localStorage.getItem(key1);
console.log(isLogin1) // null

let isLogin2 = localStorage.getItem(key2)
console.log(!isLogin2) // true

localStorage.setItem(key1,'something');
isLogin1 = localStorage.getItem(key1)
console.log(isLogin1); // something

console.log(!isLogin1); // not (not falsy, e.g. true) = false 

let somethingundefined;

localStorage.setItem(key1,somethingundefined);
isLogin1 = localStorage.getItem(key1)
console.log(isLogin1); // "undefined"

console.log(!isLogin1); // not (not falsy, e.g. "undefined") = false 
© www.soinside.com 2019 - 2024. All rights reserved.