严格模式语句导致函数未定义

Ran*_* Ma 1 javascript

我已将所有函数包装在一个立即调用的函数表达式中,如下所示:

(function(){
  "use strict";

  function toggleComment(parentCommentID) {
    $("form#" + parentCommentID).toggle();
  }

  function scrollBottom() {
    window.scrollTo(0, document.body.scrollHeight);
  }

})();
Run Code Online (Sandbox Code Playgroud)

但是,在通过链接调用其中一个函数时:

<a href="javascript:void(0)" onclick="toggleComment(159); return false;">Reply</a>
Run Code Online (Sandbox Code Playgroud)

Chrome控制台输出Uncaught ReferenceError: toggleComment is not defined.我是否错误地认为应该立即调用一个立即调用的函数表达式,因此toggleComment应该调用它?我应该以不同方式调用该功能吗

Pau*_*ips 5

该功能toggleComment不可见.它包含在你正在使用的就绪功能中; 如果你想能够像这样调用它(在大多数情况下不推荐),你必须将它提升到该函数之外并使其可以全局访问.

而这与此无关strict.如果删除该strict行,此问题仍将是相同的.