Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS中的对象文字表示法差异_Javascript_Coding Style - Fatal编程技术网

Javascript JS中的对象文字表示法差异

Javascript JS中的对象文字表示法差异,javascript,coding-style,Javascript,Coding Style,JavaScript处理以下两个声明的方式有区别吗 var foo = { foo : true, bar : 1 }; var foo2 = { "foo" : true, "bar" : 1 }; JavaScript似乎对它们一视同仁。如果它们真的是相同的,那么,有没有一种“正确”或首选的方式来声明这一点 您的第一个示例是而不是json { foo: true, bar: 1 } 因此,您的第二个代码()是json 关于你的实际问题,

JavaScript处理以下两个声明的方式有区别吗

var foo = {
    foo : true,
    bar : 1
};

var foo2 = {
    "foo" : true,
    "bar" : 1
};

JavaScript似乎对它们一视同仁。如果它们真的是相同的,那么,有没有一种“正确”或首选的方式来声明这一点

您的第一个示例是而不是json

{
    foo: true,
    bar: 1
}

因此,您的第二个代码()是json

关于你的实际问题,它们都是一样的

关于评论:


如果它们相同,但如果第一个示例不是json,而是 第二个是json,有什么区别

假设我有一个字符串,它应该(但不是)表示json字符串表示:

此字符串来自服务器:

" {foo: true,bar: 1}"
现在我想解析它

运行

JSON.parse(“{foo:true,bar:1}”)

将失败:

SyntaxError:意外标记f

然而:

JSON.parse(“{\'foo\':true,\'bar\':1}”)

就行了

Object{foo:true,bar:1}

这里有一个不同之处(一个不同的例子)

说到JS如何看待这两个对象(
objects
!!!),我没有说
json
因为第一个不是json)-它们是一样的

另外,另一个有用的特性是,即使您没有使用
“myProp”
,也会将道具视为字符串:

例如:

var a={myProp:1};  //notice no `"`
var b="myProp"; 
 a[b]=2; 
alert(a.myProp) //2
任何一种形式都可以“初始化”对象(即声明对象文字)。 属性标识符可以是,但它们都被解释为字符串:

var foo={
傅:是的,
“酒吧”:没错,
3:对
};
更多细节

请注意,PropertyName构造在第5版中可能已经更改(正如许多事情一样),因此不支持最新版本JavaScript的浏览器可能会实现不同版本的ECMAScript

还请注意,和字符串用引号括起来:

var fooJSON='{“foo”:true,“bar”:true,“3”:true}';

错误。JSON是一个字符串。你所问的是“objectliteral”。如果它们是相同的,但如果第一个示例不是json,但第二个示例是json,那么区别是什么?这是它们的类型转换还是它们的解释方式?请注意,这也意味着对成为属性的对象调用.toString():
var foo={};foo[{a:1}]='bar';foo[{}]/=>'bar';foo['[object]']/=>bar'
var a={myProp:1};  //notice no `"`
var b="myProp"; 
 a[b]=2; 
alert(a.myProp) //2