React中用常量声明所有数值并全局调用的作用是什么?
这种把数字映射成语义化常量的写法,确实存在一些合理的使用场景,具体可以分为这几类:
提升代码可读性
如果数字背后对应特定业务逻辑,比如array[NUMBER.one]里的索引1代表「初始化步骤」「核心配置项」这类有明确含义的内容,用NUMBER.one代替裸写的1,能让后续维护者一眼看懂代码意图,不用去猜数字的业务意义。但如果只是普通的数组顺序索引(比如单纯取第1个元素,没有特殊含义),这种写法反而会增加理解成本。实现全局统一维护
要是某个数字可能在未来发生变更,比如业务规则调整,原本代表「最大重试次数」的NUMBER.five需要从5改成7,只需要修改常量对象里的定义,不用在代码库中逐个查找所有写5的地方替换,能减少漏改风险。但像HTTP状态码这种标准固定值,完全没必要做映射——200就是成功响应,不会有变更的可能,这种场景下用常量反而冗余。规避魔法数字问题
编码规范里通常会禁止无注释的「魔法数字」,因为裸数字会让代码变得晦涩。如果数字本身没有直观语义,用一个有意义的常量名包裹是合理的。但如果数字本身语义非常明确(比如200、array[0]),这种映射就属于过度设计了。强类型场景下的辅助作用
在TypeScript这类强类型语言中,定义这类常量对象可以让IDE提供自动补全和类型校验,减少拼写错误。但如果是纯JavaScript项目,这个优势基本体现不出来。
回到你的场景,淘汰这种写法是合理的——尤其是处理HTTP状态码、普通数组索引这类场景时,直接使用数字更简洁清晰。但如果遇到某些数字对应特定业务含义的场景,保留语义化常量会更利于长期维护。
内容的提问来源于stack exchange,提问作者MVVV

