关于Javascript入门课程中Math.floor()示例函数冗余写法的疑问
首先明确:你提出的疑问非常合理,这个示例里的let _x = x;和后续的赋值步骤完全是冗余的,直接写return Math.floor(x)才是更简洁、高效的写法。课程里这么写,大概率是出于以下几个教学或习惯层面的原因:
拆分步骤用于教学演示:面向初学者的课程,往往会把简单操作拆成多个基础步骤,帮你理解变量的声明、赋值、修改和返回的完整流程。比如先把参数
x存入变量_x,再用Math.floor()修改这个变量,最后返回结果,是为了单独展示每一步的作用,而不是直接一步到位,适合刚接触变量和函数的新手建立基础逻辑。预留后续扩展的空间:如果这个函数之后需要添加额外逻辑(比如先判断
x是否为有效数字,或者对x做其他预处理),提前用变量存储参数值会更方便。比如之后要加判断:get floorNum(x){ let _x = x; if (isNaN(_x)) return 0; // 新增的判断逻辑 _x = Math.floor(_x); return _x; }但在当前这个仅调用
Math.floor()的示例中,这种预留就显得多余了。方便调试的习惯:如果之后需要调试这个函数,把结果存在变量里,可以在中间插入
console.log(_x)来查看数值变化;而直接return Math.floor(x)的话,就没法单独观察这一步的结果。不过对于这么简单的函数,这种调试方式其实没必要,但这是开发者常用的一种调试思路。冗余的代码习惯:有时候课程编写者可能会保留一些不必要的代码,比如复制其他复杂函数的结构后没清理干净,或者个人习惯问题。这种写法在实际开发中是应该避免的,因为会增加不必要的代码量,降低可读性。
总结:实际开发中,直接return Math.floor(x)是最优的写法,课程里的示例更多是为了演示基础编程步骤,不是必须的规范。
内容的提问来源于stack exchange,提问作者Angus

