我在内联 javascript 函数后看到了不同的行为,但我不明白为什么。
考虑:
const someFunc = someParam1 => someParam2 => {
// doSomething
}
const someFuncIndirect = someParam2 => {
return someFunc(null)(someParam2)
}
// I expected parameter1 and parameter2 to be interchangeable but they are not
const funcRef1 = someFunc(null)
const funcRef2 = someFuncIndirect
可以在此处查看不同行为的示例:https://codesandbox.io/s/0V2VyG7BV
第一个输入框使用内联版本,在输入第一个字符后,输入框会失去焦点。第二个输入框使用间接方法,不会遇到这个问题。我还注意到,如果我先在第二个输入框中键入文本,第一个输入框上的焦点问题就会消失。
所有 redux-form 似乎与函数引用有关的是用它调用 React.createElement。父调用者在两者之间是不同的,但我想不出这将如何导致这种行为。我错过了什么?
更新:修复了使用 someParam2 的间接函数示例。
最佳答案
在您上面粘贴的代码中,parameter1
将是一个采用param2
并将doSomething
的函数。另一方面,parameter2
将是一个函数,调用时,将返回 someFunc
的返回值,这将与 parameter1
相同。因此,如果您希望两个 parameters
的行为相同,请将 const parameter2 = someFuncIndirect
行中的 someFuncIndirect
替换为 someFuncIndirect()
>
关于javascript - 与内联 javascript 函数意外不同的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43765953/