[英]Immutable.js getters for invoking functions in object literal notation
[英]Object literal notation differences in JS
JavaScript處理以下兩個聲明的方式之間有區別嗎?
var foo = {
foo : true,
bar : 1
};
var foo2 = {
"foo" : true,
"bar" : 1
};
JavaScript似乎對它們相同。 如果它們確實相同,那么是否有“正確”或首選的方式來聲明呢?
屬性標識符可以是名稱,數字或字符串,但是它們都被解釋為字符串:
var foo = {
foo : true,
"bar": true,
3 : true
};
有關更多詳細信息, 請參見ECMA-262第5版語言規范§11.1.5 。
請注意, PropertyName構造在第5版中可能已更改(就像許多事情一樣),因此不支持最新版本JavaScript的瀏覽器可能會實現不同版本的ECMAScript。
還要注意, JSON將對象定義為一組字符串/值對,並且字符串用引號引起來:
var fooJSON = '{"foo":true,"bar":true,"3":true}';
您的第一個樣本不是 json
{
foo: true,
bar: 1
}
因此,您的第二個代碼( jsonlint )是json。
{
"foo": true,
"bar": 1
}
關於您的實際問題,它們都是相同的。
關於評論:
如果它們相同,但是如果第一個示例不是json,但是第二個示例是json,則有什么區別?
假設我有一個應該(但不是)表示json字符串表示形式的字符串:
此字符串來自服務器:
" {foo: true,bar: 1}"
現在我要解析它。
跑步
JSON.parse(" {foo: true,bar: 1}")
將失敗 :
語法錯誤:意外的令牌f
但是:
JSON.parse("{\\"foo\\": true,\\"bar\\": 1}")
會做的很好
Object {foo: true, bar: 1}
所以這是一個差異(一個差異示例)。
說到JS如何查看/處理兩個對象( Objects
!!!,我沒有說json
cuz,第一個不是json)-它們是相同的。
PS,另一個有用的功能是,即使您未使用"myProp"
,也可以將道具視為字符串:
例如:
var a={myProp:1}; //notice no `"`
var b="myProp";
a[b]=2;
alert(a.myProp) //2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.