javascript - 另一个函数范围多个.js文件问题

问题描述 投票:0回答:1

我有2个.js文件。包括在内,library.js依次为other.js。当从abc内部调用如下所示的记录器功能时,我得到Uncaught TypeError: logger is not a function

logger可以在other.js脚本中从外部abc找到并调用,所以我知道它已加载。如何从logger内部调用abc(以避免代码重复)?我认为logger.js将在全球范围内,并且可以从任何地方访问。

library.js

var logger = function(param){
  //...
  console.log(param);
 // ...
}

logger("library.js is included");

other.js

var x = 0;
logger("I am other"); // this happens!
var abc = {
    showDebug : true,
    doStuff : function(){
    //...
    if(this.showDebug){
        logger("Debugging now"); // this errors
    }
    // ...
  }
}
abc.doStuff();
javascript function scope uncaught-typeerror
1个回答
1
投票

它是可访问的,工作正常。也许在doStuff方法里面你将其他东西重新分配给logger变量。

const logger = string => console.log(string)

logger('works')

var abc = {
    showDebug : true,
    doStuff : function(){
      if(this.showDebug){
          logger("Debugging now");
      }
    }
}

abc.doStuff();
© www.soinside.com 2019 - 2024. All rights reserved.