这是问题的概括:

如果我打开一个控制台并输入以下代码作为一个单独的块:

var existingWin = window.open('', 'footerContent');
existingWin.close();
var existingWin = window.open('', 'footerContent')


第一个window.open和window.close调用起作用,但是第二个window.open调用不起作用。即使我延迟它给窗口时间先关闭:

var existingWin = window.open('', 'footerContent');
existingWin.close();
setTimeout(function() {var existingWin = window.open('', 'footerContent')}, 3000)


它不起作用。但是,如果我仅执行前两行:

var existingWin = window.open('', 'footerContent');
existingWin.close();


然后分别输入:

var existingWin = window.open('', 'footerContent');


它现在打开窗口。这表明问题是在同一代码块中运行它们。

这导致我正在构建的单元测试中出现问题。谁能帮助我了解为什么会发生这种情况以及是否有解决方法?提前致谢。

最佳答案

使用单词var初始化或重置变量。只要不带这个词就可以尝试,例如:

    existingWin = window.open('', 'footerContent');

09-25 17:10