立即执行函数(IIFE immediately invoked function expression )执行完会销毁,不会保存在GO中
//写法1:
(function () {} ());
//写法2:
(function () {} )();
//写法3:
var a = function(){}();
//错误写法,不会执行:
function(){}()//报错,浏览器实际解析为函数+(),但是()里面没有东西,所以报错
function(){}(6)//不报错,但不执行,浏览器解析为函数+()表达式,所以不报错
总结:一定是表达式才能被执行符号执行,被()包裹住的都是表达式,(function abc(){}) ->会忽略abc这个函数名,不会进行变量提升,所以:var a = 10 ;if(function b(){}){a+= typeof(b) //a = 10undefined}
下面的写法也是可以立即执行的,因为+-||这些会让函数变成表达式:
+functio(){}() -function(){}() 0||function(){}()
逗号运算,只返回最后一个逗号后面的内容
var num = (2,1,2+1) //num = 3