使用变量搜索窗口中的属性使用'在'中;

Using a variable to search for property in window using 'in'

本文关键字:变量 搜索 属性 窗口      更新时间:2023-09-26

在脚本继续执行之前,我正在尝试循环遍历一组必需的属性名称,这些名称应该在窗口中。然而,当我在使用"in"关键字时使用变量而不是显式文本时,JavaScript似乎不喜欢这样。

TypeError:无法使用"in"运算符在中搜索"ServiceWorker"窗口

我是做错了什么,还是这只是工作方式?

const waitForScripts = () => {
  return new Promise(function(resolve, reject) {
    var required = ["ServiceWorker"];
    var loaded = 0;
    while (loaded <= required.length + 1) {
      if (loaded == required.length) {
        resolve();
      }
      for (var i = 0; i < required.length; i++) {
        var search = required[i];
        if (search in 'window') {
          loaded++;
        }
      }
    }
  });
};

您在字符串上使用了in运算符,您想在变量窗口上使用它

if (search in window) {
    loaded++;
}

必须小心while循环。如果由于某种原因,其中一个属性名称不在窗口对象上,则最终会出现一个无限循环,因为加载的不会递增。