linux5620207 2016-06-26 03:20 采纳率: 5.3%
浏览 1084

js webStorage相关问题?

如下是整个代码,可以运行。我的问题是:在函数cookieToList中,如果把localStorage.getItem("cart") && (a = eval(localStorage.getItem("cart")));这一行注释,而使用下边的a = eval(localStorage.getItem("cart"));就会报错。
经过控制台输出查看,上边的语句得到的a为[],而下边的语句得到的a为null,为什么会不同呢。localStorage.getItem("cart")这个语句按说没起什么作用,又没要对变量赋值,都是执行的 && 后边的语句。

 <!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="jquery-1.7.1.min.js"></script>
<script type="text/javascript">
$(function(){
    var good_list = cookieToList();

    $('button').on('click',addCart);

    function addCart() {
        good_list.push({
            gid: 1,
            buyTimes: 1
        });
        localStorage.setItem("cart", JSON.stringify(good_list));
        cookieToList();
    }

    function cookieToList() {
        var a = [];

        localStorage.getItem("cart") && (a = eval(localStorage.getItem("cart")));//a == []
        //a = eval(localStorage.getItem("cart"));//a == null

        return a;
    }
});
</script>
</head>
<body>
<button type="button">click</button>
</body>
</html>
  • 写回答

1条回答 默认 最新

  • Go 旅城通票 2016-06-26 03:30
    关注

    因为初始化时 localStorage.getItem("cart") 为null,eval后还是为null,那么a的值就是null,会导致addCart出错,因为null没有push方法,这个是数组的。

    localStorage.getItem("cart") && (a = eval(localStorage.getItem("cart")));
    这是判断cart项有值才会给a赋值,否则a就是默认值[],不会导致代码出错

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog