关于js中的return void function

记得第一次接到一个还算比较完善的项目时,当时工作经验还不到一年,心里很是没底,就去网上找了相关的js代码来看,可没想到一看就傻眼了,到处都是这种形式:

相信有点基础的都给我一样,首先想到的是三目运算符。但如果按我们的理解,肯定都会写成下面这样的比较多吧

所以这里有两点困惑:1、为什么有个return;2、为什么执行方法的前面有个void。

首先解释第一个,其实到现在,我都没完全整明白,网上到处搜也搜不到答案。为什么像下面那样好好的一行代码,非要写得这么画蛇添足,也许是背后有什么其他的原因吧。就像定义插件时,高手都喜欢在前面写个分号,而小白看了就觉得多余一样。通常来说,我们都是return一个变量,对象,函数什么的居多。但如果后面要跟多个语句,我们都是用逗号隔开,Js会按常规的写法执行,而返回的是最后一个语句的值。比如:return a=100,b=20;其实就是我们平时写的a=100;b=20;return b;

关于void,我们知道,在js中,用void修饰的变量值为undefined,这就是为什么有时候会看见别人的代码里出现return void 0 之类的语句。就上面那个function来说,如果前面没有return,执行方法的前面根本不用考虑返回值的问题,所以就用不着在前面加个void。但有了return,就不一样了。我们看下面的代码:

首先,function showMessage()为无返回值的函数,故它的返回值为undefined,但对于$(“#test”).html(“”)就不一样了,它操作了一个jquery对象,因为前面有个return,而上面我们说了,return返回的,就是最后一个语句的结果,所以这里就相当于是把操作的jquery对象return出去了。但如果我们在前面加个void,就不一样了:

这里虽然也是返回一个对象,但因为它被void修饰了,所以为undefined。