let申明变量,输出undefined值

let申明变量,输出undefined值

iframe加载了一个页面,在加载iframe的页面获取iframe中let申明全局变量输出undefined,示例代码如下
点击按钮输出
undefined
admin


type="button" onclick="alert(i.contentWindow.role+'\n'+i.contentWindow.role1)" value="输出iframe中变量" />

2.html

<script>
    let role = "admin";
    var role1 = "admin";
script>

let申明的变量不会挂在在window变量上,获取不到,var会挂在window上。

在 JavaScript 中,let 声明的变量只在它所在的块级作用域内有效。这意味着,如果你在一个 iframe 中使用 let 声明一个变量,那么这个变量只能在 iframe 的文档中访问,而不能在加载 iframe 的文档中访问。

因此,当你尝试在加载 iframe 的文档中访问 iframe 中的 role 变量时,会得到 undefined 的结果。

不过,你可以使用 window.postMessage 方法来在 iframe 和加载 iframe 的文档之间进行通信,从而让加载 iframe 的文档能够访问 iframe 中的变量。下面是一个例子:

2.html:

let role = "admin";
window.parent.postMessage(role, '*');

admin.html:

window.addEventListener('message', event => {
  console.log(event.data); // 输出 "admin"
});
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632