Javascript未声明变量
Javascript not declaring variables
我是JavaScript新手,我有这个脚本,我想在if上声明一个变量,但在document.write上,什么都不返回。我做错了什么?
<head>
<script>
(function () {
setInterval(function () {
var NetworkStatus = document.getElementById("status"),
isOnline = navigator.onLine;
if (isOnline) {
NetworkStatus.innerHTML = "Online";
NetworkStatus.className = "online";
var person="John Doe";
} else {
NetworkStatus.innerHTML = "Offline";
NetworkStatus.className = "offline";
var person="Santa Claus";
}
}, 100);
})();
</script>
</head>
<body>
<h1 id="status"></h1>
<script>
document.write(person + "<br>");
</script>
</body>
这完全是错误的,为什么要使用IIFE和超时,而您所要做的只是在DOM末尾的标记中添加脚本。
此外,您正在设置元素的innerHTML,并使用document.write,这将覆盖文档?
<head>
<title>I messed up</title>
</head>
<body>
<h1 id="status"></h1>
<script>
var NetworkStatus = document.getElementById("status"),
isOnline = navigator.onLine;
if (isOnline) {
var person = "John Doe";
NetworkStatus.innerHTML = "Online " + person;
NetworkStatus.className = "online";
} else {
var person = "Santa Claus";
NetworkStatus.innerHTML = "Offline " + person;
NetworkStatus.className = "offline";
}
</script>
</body>
您在IIFE。它创建了自己的范围
这就是它停留的地方
这样做:
window.person="Santa Claus";
而不是你在做什么。
var
将变量的作用域设置为在其中声明的函数。您正试图从该函数外部document.write
它,因此它超出了作用域并且不可访问。
使用window.person
而不是var person
。
函数在100ms后执行,这意味着页面加载时person变量没有值。
相关文章:
- 是否可以在另一个变量中使用未声明的变量
- Coffeescription:循环中的条件变量未正确声明
- 是否可以在 Javascript 中将未声明的变量作为参数传递
- Javascript未声明变量
- 为什么Javascript代码打印'未定义'即使变量被声明为全局变量
- 为什么以及如何使用 jQuery 未声明的变量作为 ID
- 在 Angular 服务中接收函数的未声明变量
- 让 javascript 将(默认情况下)未声明的变量声明到当前本地范围(基于首次使用)而不是全局范围
- 在 JavaScript 中,未声明的变量赋值可以在函数范围之外访问
- JS中的未声明变量自动拾取DOM对象
- 如何避免未声明的变量破坏智能感知
- 如何评估潜在未声明变量的属性
- 为什么要在javascript中保留未声明的变量
- 区分已声明变量和未声明变量2的方法
- 区分已声明变量与未声明变量的方法
- 如何检查变量是未定义的(已声明但未赋值)还是未声明的(不存在)
- 函数中未声明的JavaScript变量覆盖使用
- Javascript变量已声明并初始化,但在检查时未定义
- 为什么不用“strict”呢?(JavaScript)检测未声明的变量
- 引用错误变量未声明