如下是整个代码,可以运行。我的问题是:在函数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>