2014-06-10 65 views
0

這就是反對字面語法如下:爲什麼我們在對象字面符號中使用「var」如果對象文字不是變量?

var x = {property:value}; 

現在,請糾正我,如果我錯了,但我正在看的是單詞「VAR」在這裏,這似乎意味着「變量」 。這是否意味着從根本上來說「對象」是變量(注意它們的行爲類似於數組)?我最近問了一個關於變量是否是對象的問題,每個人都說不。

但是奇怪的是,當創建一個對象字面量時使用了關鍵字「var」,並且如果它們不是變量(我現在假設),爲什麼ecmascript包含這個用法,如果對象字面量不在某些方式或其他變量?看起來在語法上令人困惑。

+0

對象是一個對象,它是一個*值*。變量是一個位置,並且您正在爲其分配值。您也可以使用不含變量的對象文字 - 它們是基本表達式,可用於作爲函數參數。 – Bergi

回答

2

對象{ property: value }不是一個變量,但x是,這就是var所指的。 var創建一個變量,並可選擇給它一個值; x是變量,而{ property: value }是您分配給它的對象。該對象與變量無關。考慮

var x = 5; 

5不是一個變量。

var x = null; 

null不是變量。

console.log({ foo: 70 }.foo + " boxes"); 

不變量這裏涉及到,但有對象文本,就像70是數字文字和" boxes"是一個字符串文字。

+0

非常感謝,我想我現在明白了。 (我順便按了一下btw,它發送了我的消息,我還沒有準備好響應) –

+0

@AllanSocks,如果你創建了數組,那麼數組不會是變量,它會是你分配的任何東西該數組。 'var x = [「test」,「test2」,「test3」]'...該數組只是變量值。 –

0

這裏的變量是x。您聲明x,然後將其指定爲指向對象文字。

請記住,吊裝,你的代碼最終像這樣被處理:

var x; 
x = {property:value}; 

正如你所看到的,它真的沒關係你設置x到,或者即使你不設置它根本就沒有。 var x在名爲x的當前作用域中聲明一個變量。

相關問題