Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.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
JSON/Javascript对象文字语法_Javascript - Fatal编程技术网

JSON/Javascript对象文字语法

JSON/Javascript对象文字语法,javascript,Javascript,以下选项与首选选项之间的区别是什么 选项1 var object = { 'propertyName':'propertyValue' } 选项2 var object = { "propertyName":"propertyValue" } 选项3 var object = { propertyName:'propertyValue' } 我意识到选项2是真正的JSON语法。这些都不是JSON。它们都是不同版本的JavaScript代码,使用JavaScript的

以下选项与首选选项之间的区别是什么

选项1

var object = {
    'propertyName':'propertyValue'
}
选项2

var object = {
    "propertyName":"propertyValue"
}
选项3

var object = {
    propertyName:'propertyValue'
}

我意识到选项2是真正的JSON语法。

这些都不是JSON。它们都是不同版本的JavaScript代码,使用JavaScript的文本语法创建对象。所有这些都可以实现相同的功能(取决于属性名称中使用的字符或关键字),选择哪一个取决于您(尽管您应该保持一致)

JSON是一种独立于平台的序列化方案,用于在平台/环境/进程之间传输数据。它的语法由JavaScript文字语法的子集组成。JSON总是一个字符串

在前者,这是你的选择。在JSON中,规范非常清楚,在编写JSON时将使用第二个示例中使用的样式(尽管第二个示例实际上不是JSON)。JSON序列化这些变量中的任何一个都会产生以下字符串:

{"propertyName": "propertyValue"}

在任何支持JSON的平台上都是如此。

它们在Javascript中都是等价的

Javascript在编写字符串时不区分使用单引号和双引号

在指定对象文字的键时,如果它不是有效标识符,或者是保留关键字,则需要引用它。否则,您可以使用引号将其写为字符串

偏好是一个个人风格的问题。大多数程序都是使用最后一种语法编写的,但有时会遇到问题。例如,Internet Explorer拒绝使用
class:“value”
作为语法错误,因为
class
是一个保留字,所以需要引用它。我在使用jQuery创建元素时经常遇到这个问题,例如

$("<div>" {
    id: "foo",
    class: "fooClass"
});
$(“”{
id:“foo”,
类别:“fooClass”
});

将在IE中导致错误。

如果JavaScript代码在浏览器中运行,则没有区别

“首选”语法在很大程度上是一种观点,但我经常看到属性名称没有引号

在JSON中定义对象时,使用引号确实允许在属性名称中使用非字母数字字符:

var config = {
    "foo.url": "/foo",
    "foo.timeout": 3000,
    "foo^10": 100
};

config["foo.url"];

我以前在一个配置对象中使用过它,在这个配置对象中,我不希望有深度嵌套的属性,但我确实希望在属性名中使用sudo名称空间方案。

这些语法之间没有任何区别。如果在javascript中使用,您可以自由地使用其中任何一个

JSON有点不同,它是跨平台的对象文字。程序员错误地不创建errorfull代码,这就是为什么它的语法严格使用“键的引号”

所以没有引用

{ "i-name" : "Some value" }

这将是完全错误的,因为其中包含连字符。

Hm,无论您的团队喜欢哪种编码风格。第三种方式允许您使用有限的字符集作为键,因为它需要限定为标识符。否则,由您决定。这很难回答。一种是JSON,它与JavaScript无关。另一种是JavaScript对象文字l语法。首选的是基于意见的。如果您使用JavaScript,则无需编写JSON,除非您将其传输到其他源。