Javascript JS对象未定义问题 变量X={ a:[{姓名:约翰,电话:777},{姓名:约翰,电话:777},{姓名:约翰,电话:777}], b:[{姓名:约翰,电话:777},{姓名:约翰,电话:777},{姓名:约翰,电话:777}], c:[{姓名:约翰,电话:777},{姓名:约翰,电话:777},{姓名:约翰,电话:777}], d:[{姓名:约翰,电话:777},{姓名:约翰,电话:777},{姓名:约翰,电话:777}] } var str=JSON.stringify(X); 警报(str);

Javascript JS对象未定义问题 变量X={ a:[{姓名:约翰,电话:777},{姓名:约翰,电话:777},{姓名:约翰,电话:777}], b:[{姓名:约翰,电话:777},{姓名:约翰,电话:777},{姓名:约翰,电话:777}], c:[{姓名:约翰,电话:777},{姓名:约翰,电话:777},{姓名:约翰,电话:777}], d:[{姓名:约翰,电话:777},{姓名:约翰,电话:777},{姓名:约翰,电话:777}] } var str=JSON.stringify(X); 警报(str);,javascript,Javascript,这个物体怎么了??它警告“未捕获引用错误:未定义john” 为什么???你需要引用约翰的名言。否则,它指的是尚未创建的变量/对象: <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”
为什么???

你需要引用约翰的名言。否则,它指的是尚未创建的变量/对象:

<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>
如果先前定义了
john
,则您的代码将有效:

var X = {
  a: [{name:"john", phone:777},{name:"john", phone:777},{name:"john", phone:777}]
...

现在,
john
是一个表示字符串“john”的变量,JSON是有效的。

尝试
name:'john'
,您希望它是一个字符串

如果只编写
john
,它将被解释为查找名为
john
的变量(可能包括函数)。因为它找不到具有该名称的变量,所以会说它没有定义


如果值类似于
123-456-78
(将被解释为123减去456减去78),则
phone
也是如此。如果只有数字,那么您的解决方案与现在一样好,否则请使用
'123-456-78'
更改X,如下所示。对象属性名称应为单引号或双引号。字符串值也应该被引用

var john = "john";
var X = {
  a: [{name:john, phone:777},{name:john, phone:777},{name:john, phone:777}]
  ...

john需要加引号,因为它是字符串而不是变量identifier@meouw您应该让答案而不是注释+1
对象属性既可以表示为普通字符,也可以表示为字符串。
-from。因此,
name:'john'
完全正确。
var X = {
   a: [{"name":"john", "phone":777},{"name":"john", "phone":777},{"name":"john", "phone":777}],
...
};