0

我试图弄清楚返回的setItem方法是什么。sessionStorage据我所知,以下代码返回undefined

var set = sessionStorage.setItem('foo', 'bar');
console.log(set);

我需要知道该项目是成功设置还是失败。我怎么能在不知道回报的情况下做到这一点?

4

3 回答 3

7

看看sessionStorage规格

这一行:

setter creator void setItem(DOMString key, DOMString value);

告诉我们setItem不返回任何东西。(void是返回值,那里)


您可以检查该项目是否设置如下:

if (sessionStorage.getItem('myValue') == null){
    // myValue was not set
}else{
    // myValue was set
}
于 2014-01-31T14:00:19.663 回答
1

sessionStorage来自 Mozilla 开发者网络的指南。似乎sessionStorage.setItem(name, value)没有返回任何东西。

但是,如果您想手动检查,您可以尝试以下操作:

sessionStorage.setItem('make', 'Ford');

/* Returns null if it cannot find the item in sessionStorage. */
if(sessionStorage.getItem('make')) {
    /* Session storage set successfully. */
} else {
    /* Session storage did not set successfully. */
}
于 2014-01-31T14:03:33.617 回答
0

使用 try catch 表达式,因为如果会话已满,该方法会抛出异常,如规范中所述:

try { sessionStorage.setItem('foo', 'bar'); }
catch(oops) {
     // maybe no more space, try to free
     localStorage.removeItem('foo');
     sessionStorage.setItem('foo', 'bar');
}
于 2014-01-31T14:05:12.670 回答