由于函数中缺少return
,我发生了很多错误。你看,当你编写的大部分代码都是Ruby时,很容易忘记显式返回。
所以我想使用类似于JSlint(我已经使用过)的东西来检查所有函数是否返回了什么。是的,我认为最好在不需要的时候明确地返回一些东西,而不是寻找丢失的回报。
那么,有没有可以检查退货的工具?或者我可以在运行时以简单的方式断言它?
请不要建议Coffeescript,我知道它的存在。
答案 0 :(得分:4)
JSUnit示例:
<script language="javascript" src="jsUnitCore.js"></script>
<script language="javascript">
function testWithValidArgs() {
assertEquals("someFunction should return something", "Expected REturn Value", someFunction(2, 3));
}
</script>
答案 1 :(得分:1)
只需一致地添加return
即可。但说实话,JSlint是一个非常严格的检查工具。如果您没有返回值,除非您尝试使用函数的响应来定义变量,否则永远不会出现错误,但在这种情况下,添加return
语句不仅仅是逻辑。
但是,如果您仍然致力于在每个函数中都有return
语句,那么您应该从一开始就添加它们。没有工具可以添加它们。
答案 2 :(得分:1)
我不知道任何可以开箱即用的工具。但写一个并不难。
首先使用UglifyJS将您的代码解析为语法树。编写一个递归函数来检查所有代码,寻找函数定义。对于您找到的每个功能,请查看最后一个语句。如果那个不是return语句,则打印警告。
答案 3 :(得分:0)
(评论太久了。)
当函数没有(有意义的)返回值时返回某些东西的问题是它会产生误导,除非它返回undefined
,这会使目的失效。
如果我看到return
,我必须在方法和通话网站上推断代码。
在函数中我必须确定它是否返回任何其他内容,为什么它返回它所做的值,等等。唯一真正的方法就是返回一个常量,使得它显然不是真的< / em>返回任何内容,只是为了满足返回某事的愿望。
在呼叫站点,如果忽略返回值,我需要了解原因,以及是否可以这样做。如果我知道每个函数返回一些东西,那么我必须检查函数以查看它是否返回该特殊值,或者完成上述过程。
我几乎将我的函数命名为"function"
和"method"
命名空间,作为区分符。这将允许自动测试每个命名空间,以确保所有函数返回有用的东西,所有方法特别不,并且将提供关于调用者应该期望的源级线索。