这是问题的概括:
如果我打开一个控制台并输入以下代码作为一个单独的块:
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');