其实称之为IIFE(立即执行函数)更为恰当。匿名函数的好处,在于其独立的作用域,避免对全局变量的污染。因为在新的ES标准前,JS只有全局作用域和内部作用域。如图所示,虽然都定义了变量名为parm,但是在匿名函数中的变量parm并未影响到全局变量parm.
但IIFE实现的原理是将函数声明转化为表达式,然后立即去解析执行。所以将函数声明即 function(){} 转化为表达式的方式有很多种。+function(){}();-function(){}();~function(){}();~(function(){})();等这些都是可以的,这些写法的目的都是相同的,因为!+()这些符号的运算符是最高的,所以会先运行它们后面的函数.以后再写匿名函数时可以换几种写法,会感觉B格很高~
如果定义一个变量,未对其赋值的话,其便是undefined,因为这是默认赋值,所以没必要去写 var a=undefined,但如果你总想写点什么,你可以考虑换这种写法(其实不写最好啦~)
如果代码里涉及到了大量逻辑,一堆的if else,让代码看起来挺复杂的,可以考虑适当简化一下if else的操作。
使用三元运算符,一行搞定,使代码也看起很简洁明了,当然它不适合做太复杂的逻辑嵌套,效率会比较慢。三元运算符:语法是 条件 ? 结果1 : 结果2;. 这里你把条件写在问号(?)的前面后面跟着用冒号(:)分隔的结果1和结果2。满足条件时结果1否则结果2。
合适的时机使用swich case,也挺好的,(在选择是有限的情况下)switch (t.str) { case '1': p = 11; break; case '2': p = 22; break; case '3': p = 33; break; default: break; }
也可以使用|| && !!来简化操作。“!”是取反操作,两个“!”自然是负负得正了。而使用!!的原因是处理一些异常情况,!可以将 undefined,null,0这些极端情况强转为boolean值