gpt4 book ai didi

javascript - 匿名函数如何传递参数

转载 作者:行者123 更新时间:2023-11-29 17:13:30 25 4
gpt4 key购买 nike

我一直在玩弄 javascript 函数,我坚持理解一段代码的流程:让我们举个例子

Test = (function(arg) {
function Test(str) {
console.log(arg + ' ' + str);
}

console.log('toto');

return Test;
})()

所以,如果我运行它,我会得到“toto”,很好!现在如果这样做:

Test = (function(arg) {
function Test(str) {
console.log(arg + ' ' + str);
}

console.log('toto');

return Test;
})('titi')
Test('tata');

我会得到:

toto
titi tata

这是怎么发生的,当我写Test('tata')时,我调用了第一个Test,我的意思是:
测试 = (函数(arg) ...
或者我运行了函数 Test(str) ?
如果我实际上正在运行第一个测试,它如何将 Tata 传递给其中的函数测试?
最后,为什么当我调用 Test('tata') 时它没有再次登录到 toto?

最佳答案

您的匿名函数返回内部函数“Test”。 console.log("toto") 调用不在该函数内。

调用返回函数不会再次调用匿名函数。但是,您的内部函数保留了传入的“arg”值的“内存”,这解释了为什么它记录“titi tata”。

所以,一步一步发生的是:

  1. 声明变量“Test”;
  2. 匿名函数被调用。
  3. 内部函数“Test”在匿名函数的本地上下文中定义。
  4. 执行“toto”日志语句。
  5. return 语句被执行,函数退出并引用内部函数“Test”。
  6. 返回值被分配给外部上下文中的变量“Test”。
  7. 通过外部“Test”变量中的引用调用返回的函数,参数是字符串“tata”。
  8. 运行返回函数中的 console.log() 语句,使用通过连接创建函数时(“titi”)的“arg”值构造的字符串传入的参数(“tata”)。

因此,第 5 步中返回的函数“记住”了“titi”参数,因此对该函数的任何调用都会导致字符串“titi”被添加到前面。

关于javascript - 匿名函数如何传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19935043/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com