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

时间:2015-10-18 05:42:06

标签: javascript function variables 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)
});

然而,当我尝试使它成为一个功能

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)

它说“tops”未定义。

2 个答案:

答案 0 :(得分:6)

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

items.sizePref.itemSize

你用这个:

items.sizePref[itemSize]

此外,您无法从异步回调中同步返回值。这种逻辑是错的。因此,您无法创建将返回结果的函数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
});

答案 1 :(得分:0)

如果您不熟悉承诺(即不太可能),那么您也可以使用回调。我个人认为承诺是解决问题的更好方法。

git push heroku master
相关问题