如何使用函数参数作为变量的一部分?

ale*_*kwa 1 javascript variables function google-chrome-extension

这有效

chrome.storage.local.get('sizePref', function(items) { // Get size preferences from storage
  var sizePref2 = items.sizePref.tops; // Set size to a var
  console.log("You can get this " + sizePref2)
});
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使它成为一个功能

function getSize(itemSize) {
  chrome.storage.local.get('sizePref', function(items) { // Get size preferences from storage
    var sizePref = items.sizePref.itemSize;
    return (sizePref);
  });
}
var mySize = getSize(tops);
console.log("This size that u are looking for is " + mySize)
Run Code Online (Sandbox Code Playgroud)

它说"上衣"是不确定的.

jfr*_*d00 6

当属性名称在变量中时,您使用括号语法.所以,而不是这个:

items.sizePref.itemSize
Run Code Online (Sandbox Code Playgroud)

你用这个:

items.sizePref[itemSize]
Run Code Online (Sandbox Code Playgroud)

此外,您无法从异步回调中同步返回值.这种逻辑是错的.因此,您无法创建getSize()将返回结果的函数.结果将在getSize()已经返回后的某个时间段之后才可用.您必须将回调传递给getSize()或已经getSize()返回承诺.

function getSize(itemSize) {
  return new Promise(function(resolve) {
      chrome.storage.local.get('sizePref', function(items) { // Get size preferences from storage
        resolve(items.sizePref[itemSize]);
  });
}

getSize("whatever").then(function(result) {
    // code that uses the result here
});
Run Code Online (Sandbox Code Playgroud)