<script type="text/javascript">
var X = {
a: [{name:john, phone:777},{name:john, phone:777},{name:john, phone:777}],
b: [{name:john, phone:777},{name:john, phone:777},{name:john, phone:777}],
c: [{name:john, phone:777},{name:john, phone:777},{name:john, phone:777}],
d: [{name:john, phone:777},{name:john, phone:777},{name:john, phone:777}]
}
var str = JSON.stringify(X);
alert(str);
</script>
这个对象出了什么问题?它警告“Uncaught ReferenceError:john未定义” 怎么来的?
答案 0 :(得分:8)
你需要约翰周围的报价。否则它指的是尚未创建的变量/对象:
var X = {
a: [{name:"john", phone:777},{name:"john", phone:777},{name:"john", phone:777}]
...
如果先前已定义john
,您的代码将有效:
var john = "john";
var X = {
a: [{name:john, phone:777},{name:john, phone:777},{name:john, phone:777}]
...
现在john
是一个表示字符串“john”的变量,JSON是有效的。
答案 1 :(得分:5)
尝试name: 'john'
,您希望它是一个字符串。
如果您只是编写john
,它将被解释为对名为john
的变量(包括可能的函数)的查找。由于它没有找到具有该名称的变量,因此会说它没有定义。
与phone
相同,如果值可以是123-456-78
(将被解释为123减去456减去78)。如果只有数字,那么您的解决方案就像现在一样好,否则请使用'123-456-78'
。
答案 2 :(得分:0)
如下所示更改X.对象属性名称应为单引号或双引号。字符串值也应该引用。
var X = {
a: [{"name":"john", "phone":777},{"name":"john", "phone":777},{"name":"john", "phone":777}],
...
};