Как использовать функцию ES6 Arrow для реализации выражения функции с немедленным вызовом (IIFE))?

Как использовать функцию ES6 Arrow для реализации IIFEвыражения с немедленным вызовом функции?

Вот мои демо-коды, и они прошли проверку!

// ES 6 + IIFE
(() => {
    let b = false;
    console.log(`b === ${b}!`);
    const print = `print()`;
    if(window.print){
        b = true;
        console.log(`b === ${b}!`);
    }
    let x = () => {
        if(b){
            console.log(`Your browser support ${print} method.`);
        }else{
            alert(`Your browser does not support ${print} method.`);
            console.log(`Your browser does not support ${print} method.`);
        };
    }
    x();
})();

const dcs = `IIFE: Douglas Crockford's style`;
// ES 5 + IIFE is OK
(function(){
    alert("IIFE: Douglas Crockford's style");
    console.log(dcs + ", ES 5 is OK!");
}());
// Douglas Crockford's style

// ES 6 + IIFE (error)
/*
    (() => {
        alert(`IIFE: Douglas Crockford's style`);
        console.log(`${dcs},ES 6 is Error!`);
    }());
*/
// Douglas Crockford's style
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=0.5, maximum-scale=3.0">
</head>
<body>
    <main id="print">
        <section>
            <h1>Javascript ES6 & IIEF</h1>
        </section>
    </main>
</body>
</html>

Однако со стилем Дугласа Крокфорда (МИЭФ) все же что-то не так!

скриншот введите здесь описание изображения введите здесь описание изображения


person xgqfrms    schedule 06.11.2016    source источник
comment
В вашем случае, почему вы хотите выполнить их прямо сейчас?   -  person gurvinder372    schedule 06.11.2016
comment
Ваш вопрос не ясен. Попросите друга или коллегу помочь вам с английским. Совершенное владение английским языком вообще не требуется, но мы должны понимать, о чем вы спрашиваете. Прямо сейчас кажется, что ваш вопрос и ваш код совершенно не связаны друг с другом.   -  person T.J. Crowder    schedule 06.11.2016
comment
Не уверен, что вы подразумеваете под функцией массива, но прямо сейчас ваша внешняя функция выполняется немедленно, а не назначается window.onload из-за () в самом конце. Если вы этого не хотите, удалите ()   -  person    schedule 06.11.2016
comment
Если вы имели в виду () => {...} вместо function() {...}, то это функция Arrow.   -  person    schedule 06.11.2016
comment
И IIFE - это (function(){})()   -  person mplungjan    schedule 06.11.2016
comment
Хотя я набрал слова ошибки, вы должны были легко понять, что я имею в виду!   -  person xgqfrms    schedule 06.11.2016
comment
Как веб-разработчик, если вы слышали о ES6, вы должны знать функцию стрелки !== функцию массива, не так ли!   -  person xgqfrms    schedule 06.11.2016
comment
@xgqfrms: Проблема заключалась в том, что формулировка вашего вопроса была неясной, поэтому было трудно понять, что именно вы имели в виду. Еще больше путаницы добавило то, что результат немедленно вызванной функции присваивается window.onload, но возвращаемого значения нет. И да, Функция стрелки !== Функция массива, так что мы просто хотели убедиться, что поняли правильно. Не нужно расстраиваться, когда люди просят разъяснений.   -  person    schedule 06.11.2016
comment
Хорошо, если вы не хотите отвечать на этот вопрос, вы можете просто отпустить его! Не делайте ничего бессмысленного комментария!   -  person xgqfrms    schedule 06.11.2016
comment
Выражение немедленно вызываемой функции как термин, описывающий шаблон проектирования, который также упоминается как самовыполняющаяся анонимная функция.   -  person xgqfrms    schedule 02.12.2016
comment
en.wikipedia.org/wiki/   -  person xgqfrms    schedule 02.12.2016
comment
Дубликат stackoverflow .com/questions/22138550/   -  person Bergi    schedule 08.08.2017


Ответы (1)


Окружите его круглыми скобками:

(() => console.log('hello'))()
person madox2    schedule 06.11.2016
comment
Спасибо за ваше время, кажется, работает! - person xgqfrms; 06.11.2016