在 javascript 中将 "null" 转换为 null
Cast "null" as null in javascript
我使用会话存储来设置一个可以取数值或null
的键。我注意到无论我输入什么,该字段都存储为字符串。有没有一种很好的方法可以将我的存储值转换回 null
?
例如,我想检查我的代码:
if (!sessionStorage.getItem('key')) {
// do something
}
进行该检查的最佳方法是什么?
显而易见的方法是
if (!sessionStorage.getItem('key') !== "null") {
// do something
}
我想知道是否有其他选择。
你可以解析它
JSON.parse('null') // null
JSON.parse('1') // 1
所以
var val = sessionStorage.getItem('key');
val = JSON.parse(val);
接近投射
备选方案是:
var val = sessionStorage.getItem('key');
val = val*1 || null;
sessionStorage 是一个键值数据库,两者都以字符串形式存储。您可以看到 Storage.setItem() and Storage.getItem().
的文档说明 DOMString
这样做的本质是您检索的对象将始终是字符串。您将必须通过应用 JSON.parse()
或完全手动的方法手动投射它们。 null
不进行任何操作是无法取回的。
已提到的另一种方法是简单地避免在 sessionStorage 中存储 null
值。检查密钥是否存在比事后正确转换更容易。
由于返回的语句是字符串形式,您可以说 if(!sessionStorage.setItem('key','')) {}
在写入存储之前将您的值序列化为 JSON。
var json = JSON.stringify(val);
再读出来再解析
try {
var val = JSON.parse(storage.item);
} catch(ex) {
// handle errors
}
将解析器包装在 try 块中很重要。如果用户或浏览器清除会话存储,那么您将尝试 JSON.parse('undefined')
这将引发错误。
I just want something that would evaluate to false
您可以使用空字符串来标记未设置的值:
sessionStorage.setItem('key','');
这样您就可以重新使用当前的支票:
if (!sessionStorage.getItem('key')) {
// do something
}
就是说,您提到您有一个下降到 select 个值,这就是您需要这样一个值的原因,但我认为涉及删除 null 值上的项目的解决方案会更好。 Here's a working demo,以及用于制作它的代码:
var dd = document.getElementById('dropdown');
dd.addEventListener('change', function(){
var value = this.value;
if (value === 'null')
sessionStorage.removeItem('key');
else sessionStorage.setItem('key', value);
});
var check = document.getElementById('check');
check.addEventListener('click', function(){
this.innerHTML = 'Value: '+sessionStorage.getItem('key')+
', check: '+(!sessionStorage.getItem('key'));
});
<select id="dropdown">
<option value="null">none</option>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
</select>
<button id="check">Check value</button>
我使用会话存储来设置一个可以取数值或null
的键。我注意到无论我输入什么,该字段都存储为字符串。有没有一种很好的方法可以将我的存储值转换回 null
?
例如,我想检查我的代码:
if (!sessionStorage.getItem('key')) {
// do something
}
进行该检查的最佳方法是什么? 显而易见的方法是
if (!sessionStorage.getItem('key') !== "null") {
// do something
}
我想知道是否有其他选择。
你可以解析它
JSON.parse('null') // null
JSON.parse('1') // 1
所以
var val = sessionStorage.getItem('key');
val = JSON.parse(val);
接近投射
备选方案是:
var val = sessionStorage.getItem('key');
val = val*1 || null;
sessionStorage 是一个键值数据库,两者都以字符串形式存储。您可以看到 Storage.setItem() and Storage.getItem().
的文档说明DOMString
这样做的本质是您检索的对象将始终是字符串。您将必须通过应用 JSON.parse()
或完全手动的方法手动投射它们。 null
不进行任何操作是无法取回的。
已提到的另一种方法是简单地避免在 sessionStorage 中存储 null
值。检查密钥是否存在比事后正确转换更容易。
由于返回的语句是字符串形式,您可以说 if(!sessionStorage.setItem('key','')) {}
在写入存储之前将您的值序列化为 JSON。
var json = JSON.stringify(val);
再读出来再解析
try {
var val = JSON.parse(storage.item);
} catch(ex) {
// handle errors
}
将解析器包装在 try 块中很重要。如果用户或浏览器清除会话存储,那么您将尝试 JSON.parse('undefined')
这将引发错误。
I just want something that would evaluate to false
您可以使用空字符串来标记未设置的值:
sessionStorage.setItem('key','');
这样您就可以重新使用当前的支票:
if (!sessionStorage.getItem('key')) {
// do something
}
就是说,您提到您有一个下降到 select 个值,这就是您需要这样一个值的原因,但我认为涉及删除 null 值上的项目的解决方案会更好。 Here's a working demo,以及用于制作它的代码:
var dd = document.getElementById('dropdown');
dd.addEventListener('change', function(){
var value = this.value;
if (value === 'null')
sessionStorage.removeItem('key');
else sessionStorage.setItem('key', value);
});
var check = document.getElementById('check');
check.addEventListener('click', function(){
this.innerHTML = 'Value: '+sessionStorage.getItem('key')+
', check: '+(!sessionStorage.getItem('key'));
});
<select id="dropdown">
<option value="null">none</option>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
</select>
<button id="check">Check value</button>