???????function makeCounter() { ?//不能立即执行 ???????????// 只能在makeCounter内部访问i ???????????var i = 0; ???????????return function () { ???????????????console.log(++i); ???????????}; ???????} ???????var counter = makeCounter(); //对象1 ???????counter(); // logs: 1 //立刻执行 ???????counter(); // logs: 2 ???????var counter2 = makeCounter(); //对象2 ???????counter2(); // logs: 1 ???????counter2(); // logs: 2 ???????var foo = function () { console.log("/* code */") }; //直接运行不了 ???????var foo = function () { console.log("/* code */") }();//直接运行 ???????function ff(){ /* code */ }(); // SyntaxError: Unexpected token ?出错 ???????function ff() { console.log("/* code */") } (1); // 式子无异常,无输出 ???????function foo() { console.log("/* code */")}; ???????????????(1); ?//无报错 ?无输出 ???????(function () { console.log("/* code */") }()); // 推荐使用这个 ????????????直接输出 ???????(function () { console.log("/* code */") })(); // 但是这个也是可以用的 ????直接输出 ???????var i = function () { console.log("/* code */") }(); //直接输出 ???????true && function () { console.log("/* code */") }(); //直接输出 ???????0, function () { console.log("/* code */") }(); ?//直接输出 ???????!function () { console.log("/* code */") }();//直接输出 ???????~function () { console.log("/* code */") }();//直接输出 ???????-function () { console.log("/* code */") }();//直接输出 ???????+function () { console.log("/* code */") }();//直接输出 ???????new function () { console.log("/* code */") };//直接输出 ???????new function () { console.log("/* code */") }();//直接输出 ???????????????function ff() { ???????????new function () { console.log("/* code */") }; ???????????!function () { console.log("/* code */") }(); ???????} ???????ff(); ?直接输出
?!function () { console.log("/* code */1") }(console.log("/* code */2"));//直接输出 ?先执行2 在执行1
js 立即调用函数
原文地址:http://www.cnblogs.com/enych/p/7930258.html