这个技巧用的不少,也很是的简单前端
!!'foo'
经过两个取反,能够强制转换为Boolean类型。较为经常使用。spa
这个也特别简单,String转化为Numbercode
+'45' +new Date
会自动转化为number类型的。较为经常使用。事件
这个其实很是有实用价值,不算是装逼。只是其余语言里没有这么玩的,给不太了解js的同窗看那可牛逼大了。io
(function(arg) { // do something })(arg)
实用价值在于能够防止全局污染。不过如今随着ES2015的普及已经没什么必要用这个了,我相信五年以后,这种写法就会逐渐没落。console
事件响应前端确定都写烂了,通常来讲如何写一个计数器呢?event
var times = 0 var foo = document.querySelector('.foo') foo.addEventListener('click', function() { times++ console.log(times) }, false)
好像是没什么问题哦,可是!变量times
为何放在外面,就用了一次放在外面,命名冲突了怎么办,或者万一在外面修改了怎么办。function
这个时候这样一个事件监听代码就比较牛逼了class
foo.addEventListener('click', (function() { var times = 0 return function() { times++ console.log(times) } })(), false)