在函数中使用一些与其函数同名的变量是否正常?

Is it normal to use in the function some variable with the same name as it function?

在函数中使用一些与函数同名的变量是否正常?

const sum = function(arr) {
  let sum = 0;
  for(let i = 0; i < arr.length; i++)
    sum += arr[i]; 
  return sum;
};
此代码工作正常,没有任何警告。不过我很好奇会不会有什么问题?

"shadow" 变量名通常是不好的做法。如果您不小心,可能会导致对所引用内容的混淆。

在此示例中,没有重大缺点。考虑一下,如果以后您决定使函数递归。如果您尝试从自身内部调用 sum,您会得到一个错误,指出 sum 不是一个函数,因为它找到的是内部变量 sum,而不是函数。这不是一个主要问题,但编写将来不太可能以奇怪的方式中断的代码是个好主意。你永远不知道你以后会做出什么改变。