setTimeout没有污染全局命名空间?

时间:2012-04-23 09:25:19

标签: javascript jquery global-variables

考虑以下javascript:

$(function(){
  var private_function = function(){
    alert("private_function!");
  }

  setTimeout("private_function();", 1000);  

});

这会产生错误“private_function not defined”。

有没有办法在javascript中推迟执行私有/匿名函数而不会污染全局命名空间/通过全局模块公开它?

感谢您的任何建议。

2 个答案:

答案 0 :(得分:7)

$(function(){
  var private_function = function(){
    alert("private_function!");
  }

  setTimeout(private_function, 1000);  

});

$(function(){
  var private_function = function(){
    alert("private_function!");
  }

  setTimeout(function(){
    private_function(); // with this method you can also pass some arguments
  }, 1000);  

});

答案 1 :(得分:1)

使用setTimeout(private_function, 1000);将Timeouthandler设置为函数。