Javascript 尝试使用时数组为空。本地存储后推送

Javascript 尝试使用时数组为空。本地存储后推送,javascript,arrays,null,push,Javascript,Arrays,Null,Push,当我尝试将新值推入数组时,我得到一个类型错误,表示数组为null //first off.. var sillyArray= ["dummy"]; localStorage.setItem("sillyArray", JSON.stringify(sillyArray)); //I later used this sillyArray = JSON.parse(localStorage.getItem("sillyArray")); //the error is here sillyArray

当我尝试将新值推入数组时,我得到一个类型错误,表示数组为null

//first off..
var sillyArray= ["dummy"];
localStorage.setItem("sillyArray", JSON.stringify(sillyArray));

//I later used this
sillyArray = JSON.parse(localStorage.getItem("sillyArray"));
//the error is here
sillyArray.push("yes");
localStorage.setItem("sillyArray", JSON.stringify(sillyArray));
我是否无法推送或解析此内容


(编辑了一个发布错误)

从未定义过
yesArray
。这就是为什么不可能
.push()

的原因,
yesArray
从未定义过
。这就是为什么不可能
.push()
是的,您可以,但您试图将项目推入
未定义的
变量,这就是为什么会出现类型错误

以下是您应该如何做到这一点:

var array = ['dummy'];
localStorage.setItem('someKey', JSON.stringify(array));
array = JSON.parse(localStorage.getItem('someKey'));
array.push('foo');
localStorage.setItem('someKey', JSON.stringify(array));
那么如果你这样做了

console.log(JSON.parse(localStorage.getItem('someKey')))

输出将是您所期望的
[“dummy”,“foo”]
是的,您可以,但您试图将项目推入
未定义的
变量,这就是为什么会出现类型错误

以下是您应该如何做到这一点:

var array = ['dummy'];
localStorage.setItem('someKey', JSON.stringify(array));
array = JSON.parse(localStorage.getItem('someKey'));
array.push('foo');
localStorage.setItem('someKey', JSON.stringify(array));
那么如果你这样做了

console.log(JSON.parse(localStorage.getItem('someKey')))

正如用户nnnn所说,我没有正确执行我的
localStorage.setItem(“sillyArray”,JSON.stringify(sillyArray))

它位于一个if语句(图中未显示)中,该语句未执行导致null


谢谢大家

正如用户nnnnnn所说,我没有正确执行我的
localStorage.setItem(“sillyArray”,JSON.stringify(sillyArray))

它位于一个if语句(图中未显示)中,该语句未执行导致null



谢谢大家

如果从未声明过它不能为
null
,则它将是
未定义的
。但是如果您尝试调用
.push()
,则会给出一个引用错误。把我的帖子搞砸了,代码中的“yesArray”被sillyArray替换了。问题显然仍然存在。编辑文章以修复它。如果从未声明它不能为
null
,则它将为
未定义的
。但是如果您尝试调用
.push()
,则会给出一个引用错误。把我的帖子搞砸了,代码中的“yesArray”被sillyArray替换了。问题显然仍然存在。编辑post来修复它。最好解释OP代码的错误,而不是让我们逐行比较(变量名和变量名)。我的错,这仍然不是问题所在,我只是更改了数组的名称,以便更容易识别(愚蠢吧?),在这种情况下,yesArray.push实际上是愚蠢的。push@Sausejii我发布的代码有效。如果你想尝试,复制粘贴到你的浏览器的控制台。是的!你的工作非常完美,我只是想详细说明问题的实际情况(问题中没有意外解释),所以我使用了一个答案。最好解释OP的代码有什么问题,而不是让我们逐行比较(以及变量名和变量名)。我的错,这仍然不是问题所在,我刚刚更改了数组的名称,以便更容易识别(愚蠢吧?),在这种情况下,yesArray.push实际上是sillyArray。push@Sausejii我发布的代码有效。如果你想尝试,复制粘贴到你的浏览器的控制台。是的!您的工作非常完美,我只是想详细说明问题的实际内容(问题中没有意外解释),因此我使用了一个答案。您确定您的代码按照您认为的顺序执行吗?(可能您正在进行一些异步操作?)?我有localStorage.setItem(“sillyArray”,JSON.stringify(sillyArray));在一个我几乎肯定正在执行的if语句中,尽管如此,我还是会进一步研究它。谢谢你,现在来仔细想想它到底出了什么问题。干杯您确定您的代码是按照您认为的顺序执行的吗?(可能您正在进行一些异步操作?)?我有localStorage.setItem(“sillyArray”,JSON.stringify(sillyArray));在一个我几乎肯定正在执行的if语句中,尽管如此,我还是会进一步研究它。谢谢你,现在来仔细想想它到底出了什么问题。干杯