簡體   English   中英

鍵值對初始化不能與變量一起使用?

[英]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 fobject

 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.71.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM