Как использовать функцию 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>
Однако со стилем Дугласа Крокфорда (МИЭФ) все же что-то не так!
window.onload
из-за()
в самом конце. Если вы этого не хотите, удалите()
- person   schedule 06.11.2016() => {...}
вместоfunction() {...}
, то это функция Arrow. - person   schedule 06.11.2016(function(){})()
- person mplungjan   schedule 06.11.2016window.onload
, но возвращаемого значения нет. И да, Функция стрелки !== Функция массива, так что мы просто хотели убедиться, что поняли правильно. Не нужно расстраиваться, когда люди просят разъяснений. - person   schedule 06.11.2016