CoffeeScript无法在onclick上工作

use*_*593 1 javascript coffeescript

CoffeScript代码:

 department = ->
   console.log 1
Run Code Online (Sandbox Code Playgroud)

这编译成js代码:

// Generated by CoffeeScript 1.6.3
(function() {
  var department;

  department = function() {
    return console.log(1);
  };

}).call(this);
Run Code Online (Sandbox Code Playgroud)

我有一个按钮:

<button onclick = "department()" >add department</button>
Run Code Online (Sandbox Code Playgroud)

但是当我点击它时会抛出一个错误:

未捕获的ReferenceError:未定义部门

所以我该怎么做?

PSL*_*PSL 7

这是因为你的函数department不在全局范围内,而是在你编写为IIFE的匿名函数的闭包中.

<button onclick = "department()" >add department</button>单击时将department()在全局范围内查找该函数,但您没有.

当您将处理程序编写为内联html属性时会发生这种情况.您可以使用javascript绑定事件,在闭包中提供函数作为参考.

你可以这样做:

例:-

 <button id="dept"  >add department</button>
Run Code Online (Sandbox Code Playgroud)

(function() {
  var department;

  department = function() {
    return console.log(1);
  };

  window.onload = function(){
      document.getElementById('dept').onclick = department;
  }

}).call(this);
Run Code Online (Sandbox Code Playgroud)