Javascript从模块内部访问全局变量

时间:2020-05-06 09:43:58

标签: javascript

我正在尝试从模块内部访问全局变量或函数,但是它仍然会写入未定义testFunction的错误。

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            // The webView is about to navigate to the specified url.
            // Toast.makeText(MainActivity.this, "Login clicked", Toast.LENGTH_LONG).show();
            if (interstitialAd.isLoaded()) {
                interstitialAd.show();
                interstitialAd.setAdListener(new AdListener() {
                    @Override
                    public void onAdClosed() {
                        AdRequest adRequest = new AdRequest.Builder()
                                .build();
                        interstitialAd.loadAd(adRequest);
                    }
                });
            }
            return super.shouldOverrideUrlLoading(view, url);
        }

1 个答案:

答案 0 :(得分:1)

您在main.js中声明了testFunction(),但您试图在TestModule.js中对其进行调用

您有几种选择:

  1. 在TestModule.js中声明testFucntion()
  2. testFunction()中插入runTestFunction()的正文
  3. 如果您需要在main.js中声明一个函数,然后在TestModule.js中对其进行调用,然后将其作为参数传递给runTestFunction(),例如:

TestModule.js:
export function runTestFunction(testFunction) {
    testFunction();
}

main.js:
import { runTestFunction } from './js/TestModule.js';
const testFunction=()=>{
     alert('hello');
 }
runTestFunction(testFunction);

编辑: 跟进您对范围链的评论。

之所以“未声明”是因为在声明之前您已经导入了。该代码从上到下执行。这意味着您在尝试引用该函数后便对其进行了声明。