本篇稍微讲下单引号、双引号与JavaScript和JSON之间错综复杂的关系哈,不注意的话还真可能有点懵圈。
首先在JavaScript中,单引号、双引号意义相同,完事。猫哥也是时而用单引号,时而用双引号,现在倾向于使用双引号。
而在JSON中,因为JSON是一种数据传输格式,各种语言、各种操作系统、各种平台实际上是共享的,共同遵守这么一种标准,共同为其做一些工作以便JSON在各语言、系统、平台都能具备良好的可移植性。所以首先JSON就不可能采用单引号、双引号都有效的特性(那可移植性就差劲了,各种语言还都得准备好兼容单引号、双引号了)。
JSON的基础是键值对,所有的键都是用双引号的!而值的类型就多了,常用的有字符串(必须使用双引号),真假值(true、false,注意"true"表示字符串!),数字(直接写1,2,3,4,不带单双引号)。当然JSON展开讲内容很多,以后有机会详述。
所以看到JavaScript中,如下代码,怎么是键值的键不带引号,而值有时候单引号有时候双引号不必奇怪,严格意义上来说此处的键是参数名,而字符串值json/tree_data.json之所以采用单引号只是因为外面采用双引号了,此处单引号更方便。
data-options="url:'json/tree_data.json',animate:true,lines:true">
那么在json中,如果有:
1 url:'xxxx.html'
2 url:"xxx.html"
3 'url':"xxx.html"
上面3个肯定都是根本不合语法的,而下面三个如果不考虑意义的话,仅从语法上讲是可行的。注意下一般来说,像json和xml等数据交换格式,会具备两种校验。最基本肯定是语法校验,首先你就得遵循我最基本的语法格式,不然就没法交换了。其次就是语义上的校验,比如"url":1,url如果在一个应用中表示地址/链接,那么后面跟个数字就是不合语义的,跟语义校验相关的一般叫做Schema,比如xml schema,json schema。
1 "url":"xxxx.html"
2 "url":1
3 "url":true
一般来说团队开发中经常需要采用schema,相当于大家在数据交换格式的语义上采用一致标准(语法无所谓,肯定必须是一致的,否则直接就报错了)。