![](/img/trans.png)
[英]Why are there brackets outside of the curly brackets in this function and what does this mean?
[英]What do curly brackets mean in a variable declaration?
當包圍多對integer:string
形式的integer:string
時,大括號( {}
)在變量聲明中做什么?
例如,它們在這里是什么意思?
char = {0:'(',3:') ',6:' - '};
在這種情況下,它來自以下電話號碼格式腳本:
function formatPhone(obj) {
var numbers = obj.value.replace(/\D/g, ''),
char = {0:'(',3:') ',6:' - '};
obj.value = '';
for (var i = 0; i < numbers.length; i++) {
obj.value += (char[i]||'') + numbers[i];
}
}
我相信定義char
的那一行是導致它失敗的那一行。
這是一個Javascript對象。 最好縮進,如下所示:
char = {
0: '(',
3: ') ',
6: ' - '
}
它說,你正在做與屬性的對象0
, 3
和6
組給定的值。 然后,使用char[i]
訪問屬性,除非定義了屬性,否則返回null
因此,對於除0、3和6之外的所有i
,它將默認為''
。 對於0、3和6,它將采用相關的字符串。
好吧,我想我已經弄清楚了什么是“行不通的”,盡管我仍然需要您先解釋一下這意味着什么,然后才能確定。
這行:
obj.value += (char[i]||'') + numbers[i];
如果undefined
numbers[i]
,並且僅針對i
= 0、3或6定義numbers[i]
,則將在字符串中插入undefined
。將行更改為此:
obj.value += (char[i]||'') + (numbers[i]||'');
它應該工作。
它創建一個對象:
obj = {0:'(',3:') ',6:' - '};
您的對象中有兩個元素,它們的鍵分別為0、3和6。可以訪問它們obj [0],obj [3]和obj [6]
或者您可以像在示例中那樣循環訪問它們
那是一個Javascript對象。
除了使用構造函數創建對象之外,還可以使用對象初始化程序創建對象。 使用對象初始化程序有時被稱為使用文字符號創建對象。 “對象初始化程序”與C ++使用的術語一致。
使用對象初始化程序的對象的語法為:
var obj = { property_1: value_1, // property_# may be an identifier... 2: value_2, // or a number... // ..., "property n": value_n }; // or a string
其中obj是新對象的名稱,每個
property_i
是一個標識符(名稱,數字或字符串文字),每個value_i
是一個表達式,其值已分配給property_i
。
本文的其余部分在此處提供 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.