-2
var fields = {date:{type:'date'}};
var createField = function(field, settings)
{
var myArgs = {};
myArgs = fields[field];
console.log(fields[field]);
console.log(myArgs);
console.log(settings);
if('label' in settings && settings.label) myArgs.label = settings.label;
// write html
var html = '';
myArgs = null;
return html;
}
var type = 'date';
createField(type, {label:'Date of Birth'});
// log prints no "label" in fields[field] or myArgs, but does in settings
createField(type, {});
// log prints label of "Date of Birth" in both fields[field] and myArgs, but not in settings
WTF?物件屬性未被清除
換句話說,我的函數從頭開始創建一個變量,我沒有在我的代碼中使用任何其他地方:myArgs
。它從頁面頂部的不變聲明中抓取有關字段的參數。如果傳遞給函數的settings
有一個標籤,它將標籤添加到myArgs
變量。然後在返回退出功能之前,我清除了myArgs
。
label
它第一次在settings
通過,即使它不被隨後settings
通過後,每一次顯示了在myArgs
。
EDIT FTR,label
絕不應該myArgs
或fields[field]
打印。它不存在於後者中,並且在前者的印刷時不應該存在。
* UPDATE * 小提琴:https://jsfiddle.net/Lxqvt6mk/2/
Thom,你的代碼不起作用。粘貼可運行的代碼。使用片段。 –
在寫出問題的簡化版本以節省時間時,我不小心鍵入了'和'而不是'&&'。我也忘了定義'html',因爲它被包含在我的'// html html'註釋中(再次,爲了節省您的時間)。這是一個js小提琴,它完全證明了我的問題,在做出這些小小的兩個更正之後:https://jsfiddle.net/Lxqvt6mk/2/ –