常见自执行函数写法:
1:一般的写法
( function(){
console.log(1)
})()
2: 与1的区别是后面的一对括号放里面了
( function(){
console.log(1)
}())
除了上述写法,我们可以在一些库里常看到这样的:
!function(){
console.log(1)
}()
这就让我很好奇还有哪些写法可以实现自执行呢?
后来偶尔看到JavaScript的”一元运算符“定义:
UnaryOperator
一元运算符,枚举类型,所有值如下:
enum UnaryOperator {
"-" | "+" | "!" | "~" | "typeof" | "void" | "delete"
}
嗯,试了一下,所有一元运算符放在function前面,函数最后再加上()的形式都是可以实现自执行。
你自己亲自console里试试就知道了:
typeof function(){
console.log(1)
}()
好玩吧?
然后一元运算符叠加也是可以的,比如!!,比如~~~~~~~~
但注意++和--没法放一起,因为这俩不算是一元运算符,而是属于update运算,就是会改变它们前/后面的变量。所以不把+跟+、-跟-放一起就行,比如:
-+-+-+-+-+
!-!-!-!-!
随便你了。
有人问这有意义吗?这看你的想象力了,比如在屏蔽了console.log输出、又做了压缩混淆的webpack打包后的代码里,这种是不是可以作为一个特殊的查询定位方式呢?
最后,除了上述括号和一元运算符,我试了function 前面加new 也行。呵呵,又多知道了一个“茴”字的写法了。