使用jQuery代码:
$("#myid").click(myfunction);
function myfunction(arg1, arg2) {/* something */}
Run Code Online (Sandbox Code Playgroud)
如何myfunction在使用jQuery时传递参数?
之前的一张海报在Javascript中询问了Function.bind vs Closure:如何选择?
并且部分收到了这个答案,这似乎表明bind应该比闭包更快:
范围遍历意味着,当您要获取存在于不同范围内的值(变量,对象)时,会增加额外开销(代码执行速度变慢).
使用bind,您将调用具有现有范围的函数,因此不会进行范围遍历.
两个jsperfs表明bind实际上比闭包慢得多.
这是作为对上述评论发布的
并且,我决定编写自己的jsperf
那么为什么绑定这么慢(铬+ 70%)?
由于它不是更快并且闭包可以起到相同的作用,应该避免绑定吗?
我有一个函数callWithMagic,它将一个回调函数作为参数,并用一个参数调用它.
const callWithMagic = callback => {
const magic = getMagic();
callback(magic);
};
Run Code Online (Sandbox Code Playgroud)
我还有一个函数processMagic,它有两个参数:magic和theAnswer.
const processMagic = (magic, theAnswer) => {
someOtherMagic();
};
Run Code Online (Sandbox Code Playgroud)
我想将函数processMagic作为参数传递给callWithMagic,但我也希望42将第二个参数传递theAnswer给processMagic.我怎样才能做到这一点?
callWithMagic(<what should I put here?>);
Run Code Online (Sandbox Code Playgroud) 我有一个函数,它从父级一直到组件层次结构中的子级的子级.通常这不会是一个太大的问题,但我需要从孩子那里收到一个参数.我目前收到此错误消息:Uncaught(在promise中)TypeError:this.props.myFunction不是函数.
这是我正在做的一个示例代码:
class SomeComponent extends Component{
constructor(props){
super(props);
//does whatever stuff
this.myFunction = this.myFunction.bind(this);
}
//(only applicable to raw and normal forms)
myFunction(param){
console.log('do something: ', param);
}
render(){
return (<div><ChildComponent1 myFunction={()=>this.myFunction()}/></div>)
}
}
class ChildComponent1{
render(){
return (<div><ChildComponent2 myFunction={()=>this.props.myFunction()}/></div>)
}
}
class ChildComponent2{
render(){
return (<Button onClick={()=>this.props.myFunction(param)}>SomeButton</Button>)
}
}
Run Code Online (Sandbox Code Playgroud)
所以只是为了解决这个问题:我将myFunction作为道具从SomeComponent一直传递到ChildComponent2,我希望只要点击一个按钮就调用它,并从ChildComponent2传递参数.
谢谢!
javascript ×4
callback ×1
function ×1
jquery ×1
node.js ×1
parameters ×1
performance ×1
reactjs ×1
v8 ×1