2010-04-18 145 views
12

當我輸入這個代碼顯然是無辜的代碼片段:JavaScript中的`name`關鍵字是什麼?

values.name 

gedit中強調作爲關鍵字。但是,名稱沒有與由an answer to a question about reserved keywords相關的網頁列出。我也在SpiderMonkey中做了一些簡單的測試,但名稱似乎像一個普通的標識符。

谷歌搜索並沒有告訴我很多無論是。不過,我確實發現a page listing name in "Other JavaScript Keywords".我的猜測是,是一個函數或一些DOM元素的成員,在命名空間不會侵入。

真的在JavaScript中的關鍵詞?如果是這樣,它有什麼作用?

+0

'name'被(被)用作'a'元素的屬性,所以它可能發生在DOM代碼中。也許這就是你的編輯強調它的原因。 – Thomas 2010-04-18 20:05:07

+0

其實gedit強調'name'作爲一個屬性。但在經典配色方案中,屬性和關鍵字使用相同的樣式定義。由於gedit的解析能力相當有限,儘管只有一小部分重要的屬性名稱被這種樣式突出顯示,例如像'global','source','lastIndex'和像'prototype'這樣的函數屬性的regexp屬性,'length '和'名稱'。 – Robert 2014-12-31 04:15:51

+1

在chrome中,名字像localhost中的全局對象一樣表現得很奇怪。即在一個函數內var name ='...'正在修改原始的window.name,因此'name;在fn範圍之外是可用的。但是,當我在控制檯和Plunkr中分別運行它時,顯示的是未定義/或原始窗口對象。在IE中,它的表現正常(即在localhost中未定義/清空) – Amitesh 2017-11-13 09:20:09

回答

16

它不是一個JavaScript的保留字,它的HTML屬性。任何DOM元素都可以有一個名稱。看起來你的語法編輯器仍然會突出顯示它。

3

(我知道這是2年前問,但...) 這發生在我身上也,例如下面這樣是行不通的。

name = document.getElementById('nombre'); 
//something else 
name.className = 'thinking'; 

相反,我把它改成

username = document.getElementById('nombre'); 
//something else 
username.className = 'thinking'; 

和它的工作! 是的,沒關係,但是我發現它也許很有趣,也是因爲'a'標籤的'name'屬性。需要注意的地方。

+0

問題並不在於重用全局'name'變量的問題。與在全局範圍內使用簡單的'name'相反,'values.name' *的用法確實有效,它只是在文本編輯器中異常顯示。 – Robert 2014-12-31 04:26:30

+2

'window.name'有一個setter,它在存儲它之前將值串化。只需在非全局範圍內用'var'聲明它。 – Oriol 2015-04-02 19:52:31

1

這不是一個保留字這是一個變量(它是window.name),我不知道它是由定義,雖然。

+1

雖然提到的文本編輯器不會突出顯示「name」。它僅在用作'window.name'中的屬性名稱時突出顯示。然後只有'.name'部分被突出顯示。 – Robert 2014-12-31 04:31:13