基本的JavaScript,此函数为什么不传递参数

上级男子

我正在尝试学习来自C#的JavaScript。我编写了这段简单的代码,但是由于某种原因,该参数未传递给setTimeout函数。

function displayName(name) {
    console.log(`Name is ${ name }`);
}

function login(name) {
    // The argument 'name' is not being passed from the login function to the setTimeout !!
    setTimeout(name =>{
        displayName(name)
    }, 2000);
}

login("Satoshi")

我期望输出是:Name is Satoshi
相反,我得到:Name is undefined

我要去哪里错了?显然我对JavaScript参数和范围不了解。

TJ人群

参数“名称”没有从登录函数传递到setTimeout!

那是因为您用箭头函数的参数遮盖login name该参数。函数参数列表中的参数名称类似于函数体内的变量声明,因此您的原始代码具有一个外部name(在中login)和一个单独的内部(在箭头函数中)。最里面的一个是使用参数(或变量)名称时使用的那个。

在arrow函数中替换name(),因此它不会声明自己的name参数;然后它将关闭name参数login

function login(name) {
    setTimeout(() =>{
// −−−−−−−−−−−−^^
        displayName(name);
    }, 2000);
}

默认情况下,setTimeout在浏览器上不会调用您为其提供任何参数的函数,因此name原始代码中arrow函数中参数将始终具有value undefined

在某些情况下,您可能希望setTimeout在调用计时器回调时将一个或多个参数传递给计时器回调,您可以通过在超时间隔之后传递参数来实现,例如:

function login(name) {
    setTimeout(innerName =>{
//             ^^^^^^^^^−−−−−−−− the arrow function's parameter
        displayName(innerName);
//                  ^^^^^^^^^−−− using the arrow function's parameter's value
    }, 2000, name);
//           ^^^^−−−−−−−−−−−−−−− `login`'s `name`
}

但是在您的示例中不需要这样做。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么 javascript 构造函数打印传递给它的参数?

来自分类Dev

为什么此代码将开关参数传递给PowerShell函数失败

来自分类Dev

当没有__init__方法时,为什么此代码将参数传递给构造函数?

来自分类Dev

为什么不能使用模板模板参数将std :: vector <MyType>传递给此函数?

来自分类Dev

为什么不执行此JavaScript代码?

来自分类Dev

在不执行参数的情况下传递带有参数的Javascript函数的最佳实践是什么?

来自分类Dev

为什么内联函数需要传递参数?

来自分类Dev

构造函数为什么不设置参数?

来自分类Dev

当将这些参数传递给类型化的函数时,为什么TypeScript不推断函数的参数类型?

来自分类Dev

为什么此JavaScript函数返回“ 2”?

来自分类Dev

为什么此JavaScript函数返回“ 2”?

来自分类Dev

为什么此方法/数组传递的频率不返回1

来自分类Dev

参数e(事件)到底是什么?为什么将其传递给JavaScript函数?

来自分类Dev

为什么当一个函数类型参数传递,而不是消费者不,每个Java方法不抛出异常?

来自分类Dev

为什么此函数(char *)不能通过ref传递?

来自分类Dev

为什么此函数不返回值?

来自分类Dev

为什么此Python函数执行后不释放内存?

来自分类Dev

为什么此Python“ any”函数不返回True?

来自分类Dev

为什么此函数不返回值?

来自分类Dev

为什么此IF,OR和AND函数不返回TRUE?

来自分类Dev

为什么此函数在 Python 中不返回列表?

来自分类Dev

基本的Javascript / jQuery数学游戏:为什么我不能第二次运行此函数来评估?

来自分类Dev

为什么我的javaScript函数不触发?

来自分类Dev

为什么函数 Javascript 不执行?

来自分类Dev

为什么此递归函数参数为nil?

来自分类Dev

为什么Typescript无法推断此函数的参数类型?

来自分类Dev

为什么此递归函数参数为nil?

来自分类Dev

为什么此函数的参数仍然是元组?

来自分类Dev

将抽象参数传递给方法,为什么不呢?

Related 相关文章

  1. 1

    为什么 javascript 构造函数打印传递给它的参数?

  2. 2

    为什么此代码将开关参数传递给PowerShell函数失败

  3. 3

    当没有__init__方法时,为什么此代码将参数传递给构造函数?

  4. 4

    为什么不能使用模板模板参数将std :: vector <MyType>传递给此函数?

  5. 5

    为什么不执行此JavaScript代码?

  6. 6

    在不执行参数的情况下传递带有参数的Javascript函数的最佳实践是什么?

  7. 7

    为什么内联函数需要传递参数?

  8. 8

    构造函数为什么不设置参数?

  9. 9

    当将这些参数传递给类型化的函数时,为什么TypeScript不推断函数的参数类型?

  10. 10

    为什么此JavaScript函数返回“ 2”?

  11. 11

    为什么此JavaScript函数返回“ 2”?

  12. 12

    为什么此方法/数组传递的频率不返回1

  13. 13

    参数e(事件)到底是什么?为什么将其传递给JavaScript函数?

  14. 14

    为什么当一个函数类型参数传递,而不是消费者不,每个Java方法不抛出异常?

  15. 15

    为什么此函数(char *)不能通过ref传递?

  16. 16

    为什么此函数不返回值?

  17. 17

    为什么此Python函数执行后不释放内存?

  18. 18

    为什么此Python“ any”函数不返回True?

  19. 19

    为什么此函数不返回值?

  20. 20

    为什么此IF,OR和AND函数不返回TRUE?

  21. 21

    为什么此函数在 Python 中不返回列表?

  22. 22

    基本的Javascript / jQuery数学游戏:为什么我不能第二次运行此函数来评估?

  23. 23

    为什么我的javaScript函数不触发?

  24. 24

    为什么函数 Javascript 不执行?

  25. 25

    为什么此递归函数参数为nil?

  26. 26

    为什么Typescript无法推断此函数的参数类型?

  27. 27

    为什么此递归函数参数为nil?

  28. 28

    为什么此函数的参数仍然是元组?

  29. 29

    将抽象参数传递给方法,为什么不呢?

热门标签

归档