Это потому, что JSFiddle вручную вставляет следующий скрипт в каждый iframe:
// tell the embed parent frame the height of the content
if (window.parent && window.parent.parent){
window.parent.parent.postMessage(["resultsFrame", {
height: document.body.getBoundingClientRect().height,
slug: "n4j20xkh"
}], "*")
}
// always overwrite window.name, in case users try to set it manually
window.name = "result"
Это можно увидеть, проверив результат iframe и посмотрев тег <script>
в нижняя часть тела. Поэтому, даже если ваш код никогда не создает переменную name
, он уже существует в глобальной области видимости.
Обратите внимание, что window.name
будет всегда существовать в виде строки независимо от сайта, даже если сайт ему не назначен.
(Обычно ссылается на неинициализированную переменную приведет к ошибке ReferenceError - , а не undefined
- но поскольку существует window.name
, ошибки не выдается.)