举个例子. 你这样返回的时候, JS 代码仔需要写多好几个判断来取数, 尤其是需要字符串内容做正则的时候 if (typeof a === 'string' && /balabala/.test(a)) {} 要不就是 if (a.length) 能解决的时候, 需要 if (Array.isArray(a) && a.length) , 看起来是没什么, 但是页面结构复杂度以上去, 数据字段一开始多, 这一大堆多出来的判断, 就会成为客户端代码的屎山
1 、有的语言里,null 会报错。还会导致 if 判断不按预期的分支走。(特别适合用来写屎山,因为从语言层面你看不出任何一点不按预期分支走的可能,直到单独调试在这里才发现卧槽) 2 、有的语言里,null 不会报错但是每次都要考虑它就显得很烦了,谁都不想增加负担。 一般的解决方案:禁止 null 的存在,明确每个值的意义。 未定义也不许用 null ,字符串可以用"",数字可以用 0 或者-1 (具体按自己的定义来)。 数字类型:1 是男,0 是女,-1 是未定义 又或者 0 是未定义,1 是男,2 是女,3 是跨性别男,4 是…… 字符串类型:""是未定义,"男"是男。 日期类型:“1970 年 1 月 1 日”是未定义,或者“0000 年 00 月 00 日”是未定义。
不返回的话他们可以自己用默认值,返回为 null 就覆盖了默认值,如果要处理的话其实也可以,自己实现反序列化就好了,但是我估计客户端不愿意干,不然你也不会来问了。所以你不如直接不返回,看你用什么序列化框架,一般如 6#所述加个注解就好了。
我觉得应该返回 null ( OP 没说返回的数据格式是啥,默认 JSON 了) 1 、JSON 里面本来就是有 null 这个类型的 2 、数字型,不返回 null 的话,用什么表示这项数据没有值呢?用哪个数值都不太合适 如果没值的项直接不返回的话,其实和返回 null 差别也不大 比如对于 js ,就是判断 undefined 和 null 的差别