[英]Key Value Pair initialization not working with variable?
我試圖理解為什么這兩行代碼的行為方式有所不同,我也試圖使用示例二中的變量來創建示例一中的行為,請參見下面的示例:
var kv = {
'abc': 'moon',
};
Browser.msgBox(kv['abc']);
返回預期的月亮。
var f = 'abc';
var r = 'moon';
var kv2 = {
f: r,
};
Browser.msgBox(kv2[f]);
返回未定義。
在第二個示例中,您將創建kv2
作為具有唯一property
f
的object
。
var f = 'abc'; var r = 'moon'; var kv2 = { f: r, }; console.log(kv2); console.log(kv2.f);
.as-console {background-color:black !important; color:lime;} .as-console-wrapper {max-height:100% !important; top:0;}
新的ECMAScript( ES6
)包含一個名為計算屬性名稱的功能,該功能將足以滿足您嘗試執行的操作,即使用存儲在某個變量中的屬性名稱。 例:
var f = 'abc'; var r = 'moon'; var kv2 = { [f]: r, // Using computed property name! }; console.log(kv2); console.log(kv2[f]);
.as-console {background-color:black !important; color:lime;} .as-console-wrapper {max-height:100% !important; top:0;}
但是,從wikipedia
,您可以看到此功能不可用:
Apps Script是用於G Suite平台中輕量級應用程序開發的腳本語言。 它基於
JavaScript 1.6
包含1.7
和1.8
某些部分),並提供ECMAScript 5 API的子集。
因此,如果您仍然想使用存儲在變量中的屬性名稱,則可以做的最好的事情是:
var f = 'abc'; var r = 'moon'; var kv2 = {}; kv2[f] = r; console.log(kv2); console.log(kv2[f]);
.as-console {background-color:black !important; color:lime;} .as-console-wrapper {max-height:100% !important; top:0;}
您可以使用對象符號:
Browser.msgBox(kv2.f);
這兩種方法對我有用:
您實際上可以在這種情況下看到kvr = {f:r},編輯器顯示密鑰沒有接受替換。
function sampletest() {
var f='abc';
var r='moon';
var kv2={abc:r};
Browser.msgBox(kv2[f]);
}
function sampletest1() {
var f='abc';
var r='moon';
var kv2={};
kv2[f]=r;
Browser.msgBox(kv2[f]);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.