使用es6中的参数导入IIFE?

时间:2017-11-10 09:29:41

标签: javascript ecmascript-6

我试图在class website { public: website(int input); // ~website(); int insert(const mainentry & input); int retrieve( char [], mainentry output [] ); int edit (mainentry & input); int remove(); int display(char []); int display_all(); int hashfunction(const char []); private: int SIZE; node ** hashtable; }; import es6个包,但源文件使用期望window范围的mule uploader作为参数传递。

导入包并将正确参数传递给es6的正确IIFE语法是什么?

注意:import { mule_upload } from 'mule-uploader的问题不在于代码是否存在或正在执行。问题是scopenamespace没有通过IIFE次运行传递。

App.jsx

import { mule_upload } from 'mule-uploader'
// this runs the mule-uploader file with the IIFE
// since `this` is not `window` at this point,
// the mule-uploader object has the incorrect scope/namespace
console.log(this) // undefined

// ... react logic
componentDidMount() {
  // define settings
  // this won't work because the namespace is undefined
  mule_upload(settings)
}

2 个答案:

答案 0 :(得分:1)

  

IIFE不接受任何论据

错!由于IIFE的正确ES6语法是:

$("div[id^='post_']").click(function() { ... })

你可以这样使用参数:

 (() => {
 }());

或简单地说:

  ((param) => {
      console.log(`My IIFE + ${param} !`);
  })("myParam");
  // it will return => My IIFE + myParam !

如果你只有一个参数......

答案 1 :(得分:0)

  

如何将正确的参数传递给IIFE?

你做不到。 IIFE不接受任何参数 - 它已经调用。

  

导入包的正确es6语法是什么?

我不认为可以将该文件作为模块导入,无论是在ES5还是在ES6中。在模块中,this is not the global object。该代码无效。

您可能希望发出一个功能请求,以使该库可用作可导入模块(实际导出某些内容),而不是定义全局变量的脚本。对于backcompat,您可以建议他们使用UMD模式。