47

有谁知道如何使用 ES6 箭头语法编写立即函数?

这是 ES3/5 的做法:

(function () {
   //...
}());

我尝试了以下方法,但unexpected token在最后一行出现错误。

(() => {
  //...
}());

你可以在这里测试:http: //www.es6fiddle.net/hsb8bgu4/

4

3 回答 3

75

箭头函数示例中,

(() => "foobar")() // returns "foobar" 

所以,函数调用操作符应该在外面。

(() => {
  //...
})();

示例:http ://www.es6fiddle.net/hsb8s1sj/

于 2014-03-03T04:20:16.020 回答
11

这是我的演示代码!

永远记住function_name+ ()=== function_caller

/* ES5 */

// normal function

function abc(){
    console.log(`Hello, ES5's function!`);
}
abc();

var abc = function xyz(){
    console.log(`Hello, ES5's function!`);
};
abc();

// named function

var abc = function xyz(){
    console.log(`Hello, ES5's function!`);
}();


// anonymous function
// 1
(function(){
    console.log(`Hello, ES5's IIFE!`);
})();

// 2
(function(){
    console.log(`Hello, ES5's IIFE!`);
}());

// 3

var abc = function(){
    console.log(`Hello, ES5's function!`);
}();


/* ES6 */

// named arrow function
const xyz = () => {
    console.log(`Hello, ES6's Arrow Function!`);
};
xyz();


const xyz = (() => {
    console.log(`Hello, ES6's Arrow Function!`);
})();


// Uncaught SyntaxError: Unexpected token (

/*
const xyz = (() => {
    console.log(`Hello, ES6's Arrow Function!`);
}());
*/

// anonymous arrow function
(() => {
    console.log(`Hello, ES6's Arrow Function!`);
})();

使用 ES6 箭头函数实现 IIEF!

立即调用的函数表达式

let x;

(x = () => {
  console.log(`ES6 ${typeof(x)}`);
})();

// ES6 function

// OR

(() => {
  console.log(`ES6 ${typeof(Symbol)}`);
})();

// ES6 function

于 2016-12-02T10:53:16.700 回答
0

这是一个简单的例子。

定义箭头函数:

const temp = (x)=> {return x+" world";}

// call it as a function
temp("hello") // output: hello world

要立即调用箭头函数:

const temp = ((x)=> {return x+" world";})("hello")

// use it as a variable:
console.log(temp); // output: hello world

// a self-invoking function without params:
const temp = (()=> {return "world";})()
于 2022-02-07T12:34:50.100 回答