我正在测试以查看是否存在本地存储密钥。
因此,首先我完成了console.log,以查看值中包含的内容...
console.log(localStorage.getItem('mykey'));
这将返回null
所以我这样做是为了满足条件:
if (localStorage.getItem('mykey') === null) {
console.log('It is null');
}
但是,尽管我知道它为null,但没有显示:
console.log('It is null');
可能是什么问题?
答案 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,则应使用'=='运算符。