Javascript本地存储条件不响应

时间:2018-06-20 09:14:46

标签: javascript local-storage

我正在测试以查看是否存在本地存储密钥。

因此,首先我完成了console.log,以查看值中包含的内容...

console.log(localStorage.getItem('mykey'));

这将返回null

所以我这样做是为了满足条件:

if (localStorage.getItem('mykey') === null) {
    console.log('It is null');
}

但是,尽管我知道它为null,但没有显示:

console.log('It is null');

可能是什么问题?

5 个答案:

答案 0 :(得分:2)

已更新

原始发布的private Observable<String> observableSubject(String subject, Integer idServer, List<GetShortTermCoursesModel> shortTermCoursesModels) { return Observable.defer(new Callable<ObservableSource<? extends String>>() { @Override public ObservableSource<? extends String> call() throws Exception { if (shortTermCoursesModels != null && !shortTermCoursesModels.isEmpty()) { Iterator<GetShortTermCoursesModel> lst = shortTermCoursesModels.iterator(); while (lst.hasNext()) { GetShortTermCoursesModel values = lst.next(); if (mCompositeDisposable.isDisposed()) return Observable.just("Stop"); if (idServer.compareTo(Integer.parseInt(values.getCourseCategoryId())) == 0) { lst.remove(); } } } return Observable.just("Finish"); } }); } 实际上在Chrome上返回了localStorage.getItem('mykey') === null,因此可能是与浏览器相关的问题。

因此,尽管第2 / 3rd选项可能更好,但通过使用第一个建议的双等于true解决方案,可能会更好地支持跨浏览器。

如果键不存在,则返回的值为==的{​​{1}},而不是完全相同的类型(object)为null

丢掉一个===(它将进行自动广播)并且可以工作

null

或者只是做类似的事情

=

或(as shown here)可能更好(实际上可能是骗子)

if (localStorage.getItem('mykey') == null) {
  console.log('It is null');
}

答案 1 :(得分:0)

如果您设置了localStorage.setItem('someKey', null),然后尝试像这样someKey来获取并检查localStorage.getItem('someKey') === null的值,比较结果将是false,则您需要使用JSON.parse()方法与null之类的JSON.parse(localStorage.getItem('someKey')) === null

比较之前

答案 2 :(得分:0)

检查localStorage是否为null。如果localStorage为null,则控件不会输入if块。

答案 3 :(得分:0)

关于正在发生的事情的假设:

  $(document).on('keypress', '#editable', function(e){
    if (e.which == 13) {
        $(this).closest('td').next().find('input.serial').focus();
        e.preventDefault();
    }
  });

因此,将localStorage.setItem('mykey', null) console.log(localStorage.getItem('mykey')) // returns "null" 显式设置为null实际上会将其设置为mykey字符串。

要进行比较,您可以做到

"null"

答案 4 :(得分:0)

标识(===)运算符检查两个操作数的值和数据类型是否相等或相同。也就是说,

var a = 2;
if (a === '2') 

-将返回false,因为a是整数并且'2'是字符串。

if (a == 2)

-将返回true,因为'=='运算符不强制数据类型相等。

因此,要处理所有情况,例如localStorage中缺少密钥或将其显式设置为null,则应使用'=='运算符。