Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
3.9k views
in Technique[技术] by (71.8m points)

bind传参和直接传参的优先级如何?

如下面的代码,test函数内打印入参root,在runTest里return 一个test的bind,bind时给test传参为字符串'root'。

然后我调用runTest(),它的调用结果是test函数的引用,但是是bind过后的。

此时我再给它传入false:runTest()(false)。

打印出来的是bind时传的参数:'root',而不是我后来传入的false,这是因为bind传参比调用时传参的优先级高吗?

function test(root) {
    console.log(root)
}
function runTest() {
    return test.bind(null, 'root')
}

runTest()(false)
// root

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

不是哦,false 会作为第二个参数传递给 test 函数。

function test(root, b) {
    console.log(root, b)
}
function runTest() {
    return test.bind(null, 'root')
}

runTest()(false)
// root false

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...