我们有一个函数,它将多次运行-现在是外部函数-(例如带有react,因此它可以更清楚地定义我要问的内容)。如果在外部函数体内定义函数,则可以利用闭包的优势,因此可以访问外部函数的作用域。
在第二种情况下,我们独立定义函数,因此在函数主体之外。这样,我们将无法访问外部函数的作用域,因此我们必须将所需的参数作为参数传递。
重要的问题是:在外部声明该函数或在一个函数内部声明该函数(将被多次调用)之间是否存在明显的性能差异?换句话说,每次外部函数运行时,外部函数体内的函数声明会花费时间吗?
查看示例:
import React, { useState } from "react";
const outerOnChange = ({ target: { value } }, setValue) => setValue(value);
const Input = () => {
const [ value, setValue ] = useState("");
const innerOnChange = ({ target: { value: newValue } }) => setValue(newValue);
const onChange = e => {
outerOnChange(e, setValue);
innerOnChange(e);
};
return <input onChange={onChange} value={value} />;
};