有誰知道如何使用ES6箭頭語法編寫即時函數?使用JavaScript ES6箭頭函數的即時函數
這裏做的ES3/5路:
(function() {
//...
}());
我試過以下,但在最後一行得到unexpected token
錯誤。
(() => {
//...
}());
你可以在這裏測試:http://www.es6fiddle.net/hsb8bgu4/
有誰知道如何使用ES6箭頭語法編寫即時函數?使用JavaScript ES6箭頭函數的即時函數
這裏做的ES3/5路:
(function() {
//...
}());
我試過以下,但在最後一行得到unexpected token
錯誤。
(() => {
//...
}());
你可以在這裏測試:http://www.es6fiddle.net/hsb8bgu4/
(() => "foobar")() // returns "foobar"
所以,函數調用操作外應。
(() => {
//...
})();
這種方式也適用於常規功能,無論如何它只是更有意義 - 包裝函數本身使其成爲一個表達式,然後調用該表達式。事實上,當你包裝整個函數調用時,它也是有效的,這是一個奇怪的怪癖,我很高興這不適用於箭頭 – callum
這裏是我的演示代碼!
永遠記住,
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!`);
})();
Immediately-invoked function expression
let x;
(x =() => {
console.log(`ES6 ${typeof(x)}`);
})();
// ES6 function
// OR
(() => {
console.log(`ES6 ${typeof(Symbol)}`);
})();
// ES6 function
調用之前關閉分組 - '})();'http://www.es6fiddle.net/hsb8ot2m/ –
這可能是一個錯誤traceur(可能與[此問題(https://github.com/google/traceur-compiler/issues/457))。它適用於babel([repl demo](http://babeljs.io/repl/#?experimental=false&evaluate=true&loose=false&spec=false&playground=true&code=()%20%3D%3E%20%7B%0D% 0A%20%20%return 20%22Yay!%22%0D%0A%7D()%3B)) – Bergi
請務必記住'function_name'+'()'==='function_caller' – xgqfrms