自执行函数

常见自执行函数写法:

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 也行。呵呵,又多知道了一个“茴”字的写法了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值