const alert = require("alert");
/* 函数定义,js引擎规定,function出现在行首,一律解析为语句
*/
function test(e) {
console.log(e);
}
// 若不让function出现在行首,让js引擎理解为一个表达式,则将其放置括号里
(function (e){
alert(e);
})(1); // 加括号可以直接调用此函数
(function (e){
alert(e);
}(1)); // 加括号可以直接调用此函数
/*
上边的两种写法,都是以圆括号开头,引擎会意味后面跟的是表达式,
而不是一个函数定义语句,所以就避免了错误,这就叫做"立即调用的函数表达式"
立即执行函数作用:
1.不必为函数命名,避免了污染全局变量;
2.立即执行函数内部形成了一个单独的作用域,可以封装一些外部无法读取的私有变量;
*/
// 立即执行函数也有返回值
const result = (function(e) {
return e+1
})(1);
console.log(result);