js函数调用

我先在html中调用自执行函数内部的方法,怎么办? 例如:

<div onclick="foo()"></div>

<script>
(function(){

   function foo(){
        alert('xx');
     }

}()

</script>

阅读 3.2k
2 个回答

我感觉这样会比较好点,将全局变量window传进去比较好点:

(function(global){
  global.foo = foo;

  function foo(){
     alert('xx');
  }
})(window);

我去。。题主,你确定要采纳你现在采纳的那个答案么??
我先给你分析一下我的见解:

<div onclick="foo()"></div>
<script>
(function(){
  foo = function (){
        alert('xx');
  }
}()
</script>

这种方式意思是(按运行先后顺序):

  1. 创建了一个函数对象

  2. 声明了一个全局的函数:foo

  3. foo指向之前创建的函数对象
    我先说的意思是,这时的foo是全局指针,也就是说,对全局环境有污染。试想你的页面不会只有这一个element有个事件吧?而且按编程思想也不应该把元素的点击事件做成全局的,做成全局的应该是common级别的东西。

他的第二个方案其实也是一回事,只不过把闭包去掉了而已。

===========================================================
我觉得,而且也是主流的做法是:

<div id='abc'></div>
document.getElementById('abc').onclick = function() {alert('xx');};

当然,我更偏向于使用比较成熟的脚本库(比如jQuery):

$('#abc').click(function() {
  alert(xx);
});

当然还有更多的写法,基于效率。不过这都是后话,题主可以循序渐进。加油

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题