看不到函数外的Javascript变量

Javascript variable outside a function is not seen

本文关键字:Javascript 变量 函数 看不到      更新时间:2023-09-26

以下代码不起作用,因为var clock_socketstart函数之外。这很明显,但为什么呢?我认为,如果函数中不存在其他同名变量,那么外部变量就可以在函数中"看到"。

var clock_socket = document.getElementById("clock");
var start = function(){   
    var hour = new Date();
    clock_socket.innerHTML = hour.toLocaleTimeString();
}
var emp = setInterval(function(){start()},1000);

您在这里看到的并不是您可能认为的函数范围的问题。该函数可以查看您定义的全局变量,但如果DOM尚未完全加载,则不能查看。

为了解决你的问题,试着像这样包装你的函数(如果你使用的是jquery)

jQuery(document).ready(function(){
    var clock_socket = document.getElementById("clock");    
    var start = function(){   
        var hour = new Date();
        clock_socket.innerHTML = hour.toLocaleTimeString();
    }
    var emp = setInterval(function(){start()},1000);
})

另一种建议是将脚本放在body标记的末尾,或者在文档准备好时调用事件侦听器。

希望这能帮助你

Crhisoh的答案很好,但为了防止您不使用jQuery,请在<head> 中编写代码时尝试以下操作

(function(){
  var load, unload;
  load = function () {
    // setup all your stuff here
  };
  unload = function () {
    // unset or cleanup
  };
  window.addEventListener('load',load,false);
  window.addEventListener('unload',unload,false);
}());

这当然可以改进,但它可以保证在window.onload事件

上工作