JavaScript中将自定义函数赋值给变量,应使用var/let/const哪种声明?
工具函数声明关键字选择说明
你编写的const声明版本是该场景下的最优选择,完全符合现代JS编码规范。
各关键字适配性分析:
- 不推荐使用
var:var存在变量提升、函数级作用域的设计缺陷,容易引发全局变量污染、变量意外覆盖等问题,ES6及之后的开发规范已不推荐使用var做变量声明。 - 不适合使用
let:let的语义是「声明的变量后续会被重新赋值」,而nullToEmpty作为通用工具函数,正常业务逻辑中不会被重新赋值为其他内容,使用let会传递错误的语义,提升代码维护成本。 - 首选
const的原因:const会限制标识符不能被重新赋值,刚好匹配固定工具函数的定位,既可以避免后续编码时不小心错误覆盖该函数,也能明确向其他维护者传递「该标识符绑定的函数固定不变」的语义,是这类通用工具函数声明的首选方案。
最终优化后代码参考:
const nullToEmpty = function (obj) { if(typeof obj == 'undefined'){ return null; }else{ return JSON.parse( JSON.stringify(obj).replace(/:null/gi, ':""') ); } };
可选精简写法(箭头函数):
const nullToEmpty = (obj) => { if(typeof obj === 'undefined') return null return JSON.parse(JSON.stringify(obj).replace(/:null/gi, ':""')) }
内容的提问来源于stack exchange,提问作者mahen3d
相关产品推荐
相关产品推荐

