说起`void(0)`,估计现在好多年轻的前端听都没听过,觉得这是什么老古董,其实啊,这玩意儿在以前可火了,解决了不少问题,现在虽然用得少了,但是了解一下,没坏处,指不定哪天就用上了,而且学会了,面试的时候也能吹吹牛,显得你懂得多,是不是。
这`void`,其实就是一个运算符,你给它一个东西,它算了算,然后啥也不给你,就给你一个`undefined`,听着是不是有点儿欠揍,但是有时候,我们就需要这个“啥也不给”,比如说,之前写立即执行函数,大家都在想,这到底是怎么一回事,直接写个`function(){}`,浏览器它不认啊,报错,气得不行,说语法不对,那怎么办,加个`void`在前面,`void function(){}`,嘿,它就认了,你说神奇不神奇。
还有啊,以前写页面的时候,经常用到``,这玩意儿,所有人都觉得它丑,但是没办法啊,不用它,你点一下链接,页面就跳走了,用了它,就老老实实待在原地,可不是嘛,那个时候可没什么好用的框架,都是自己手撸代码,不用`void(0)`,简直没法活,不过现在好了,vue,react随便用,这东西也就慢慢淡出大家的视野了。
但是啊,这`void`的用法可多了,它最大的作用,就是强制返回`undefined`,这个`undefined`可不是随便来的,它是为了控制表达式的副作用,你想想啊,有时候我们写代码,只想执行一下函数,但不想让它返回任何东西,这个时候,`void`就派上用场了,它就像一个保险栓,保证你的代码不会出什么幺蛾子。
就比如说,箭头函数,箭头函数写起来是方便,但是有时候也会出问题,比如说,你用箭头函数处理一个checkbox的点击事件,结果箭头函数隐式返回了一些东西,导致你的代码行为和你预想的不一样,这个时候,用`void`包一下箭头函数,就万事大吉了,保证你的代码按你的想法走,你说它是不是挺实用,当然啦,现在框架那么发达,有的是其他更好的方法来处理这些问题,但是了解`void`的本质,对理解javascript还是很有帮助的。
很多老前端当年写javascript,都是用`void(0)`,那用的一个炉火纯青,脸上也有光,后来ES6都出来了,各种好用的框架也遍地开花,这个东西就被扔进了老古董堆里,其实也没错,时代在发展,新的东西肯定会替代旧的东西,就像以前用jQuery,现在都用Vue,React是一个道理,但是那些老的经验,老的技巧,了解一下,也能让我们更好地理解现在的东西,不是吗。
所以啊,下次看到`void(0)`,别觉得它是什么没用的东西,它也是前端发展历史中的一部分,它也曾经辉煌过,它也曾经解决过很多问题,记住它,记住那些曾经为前端发展做出贡献的人和事,这才是我们应该做的,很多人看完这个故事,都会去想,哎,时间过得真快,前端发展真快啊。