JS对象未定义的问题

DrS*_*ove 2 javascript

<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>
Run Code Online (Sandbox Code Playgroud)

这个对象有什么问题?它警告"Uncaught ReferenceError:john未定义"怎么来?

McS*_*tch 8

你需要约翰周围的报价.否则它指的是尚未创建的变量/对象:

var X = {
  a: [{name:"john", phone:777},{name:"john", phone:777},{name:"john", phone:777}]
...
Run Code Online (Sandbox Code Playgroud)

如果john先前已定义,您的代码将是有效的:

var john = "john";
var X = {
  a: [{name:john, phone:777},{name:john, phone:777},{name:john, phone:777}]
  ...
Run Code Online (Sandbox Code Playgroud)

现在john是一个表示字符串"john"的变量,JSON是有效的.


kap*_*apa 5

试试name: 'john',你希望它是一个字符串.

如果您只是编写john,它将被解释为查找名为的变量(包括可能的函数)john.由于它没有找到具有该名称的变量,因此它会说它没有定义.

phone如果值可以是类似的123-456-78(将被解释为123减去456减去78),同样将使用.如果只有数字,那么您的解决方案就像现在一样好,否则请使用'123-456-78'.