当前位置: 首页 > 知识库问答 >
问题:

javascript - 函数写在函数里面和函数外面有什么区别?

胡越
2023-11-05
function a(){    var io = "io"    mystart()    function mystart(){        console.log(io);    }}a()function a(){    var io = "io"    mystart()}function mystart(){    console.log(io);}a()

请教一下:
1.为什么第一个可行,第二个不可行?
2.为什么第二个访问io变量的时候不会按照访问规则当前函数作用域下访问不到,到嵌套着它的函数作用域中去寻找?
3.两种写法的函数实际存储方式大概是怎样的?

共有1个答案

齐望
2023-11-05

javascript是静态作用域。函数声明时,作用域就已经确定了。并不是在函数调用的时候确定作用域。
https://juejin.cn/post/7022537890114568205

 类似资料:
  • 给定下面的代码片段,函数调用有什么不同?什么是函数隐藏?什么是函数覆盖?它们与函数重载有什么关系?两者有什么区别?我在一个地方找不到关于这些的很好的描述,所以我在这里询问,这样我可以整合信息。

  • 本文向大家介绍JavaScript中的匿名函数和内联函数有什么区别?,包括了JavaScript中的匿名函数和内联函数有什么区别?的使用技巧和注意事项,需要的朋友参考一下 匿名函数 顾名思义,匿名允许创建没有任何名称标识符的函数。它可以用作其他函数的参数。这就是可以使用JavaScript匿名函数的方式- 另一个示例可以如下- 内联函数 一个内联 函数是一个javascript函数,其被分配给在运

  • 问题内容: 我有以下功能 这段代码: 我的问题可能有点难以理解,所以请忍受:是什么使该代码段与常规调用完全区分开,或者是什么使该代码段需要引用函数变量而不是常规调用?() 我怎么知道应该在哪里引用该函数,以及什么时候该真正调用它? 问题答案: 好吧,该属性期望对函数的引用,以便在单击元素时执行该函数。通常是: 要么 (但是,当然,最好使用和) 请注意,它们都是如何引用函数而不是调用。 当某些东西需

  • 问题内容: 我可以在Swift库中看到这些定义: 定义为的成员函数与定义为的另一个成员函数有什么区别?仅仅是为了结构和枚举的静态功能,以及用于类和协议吗?还有其他应该知道的区别吗?在语法本身中具有这种区别的原理是什么? 问题答案: 是否仅将static用于结构和枚举的静态函数,将class用于类和协议? 那是主要区别。其他一些区别是类函数是动态调度的,并且可以被子类覆盖。 协议使用class关键字

  • 问题内容: 如果我运行此命令: 我得到这个: 但是如果我运行这个: 然后,我得到了预期的结果: 有什么不同? 问题答案: 带有全局正则表达式的表达式应在循环中使用,因为它仍将检索所有匹配的子表达式。所以: 为您执行此操作,并丢弃捕获的组。

  • 我可以在Swift库中看到这些定义: 定义为的成员函数和定义为的成员函数之间有什么区别?简单地说,是用于结构和枚举的静态函数,而是用于类和协议吗?还有什么其他的不同之处是你应该知道的吗?语法本身有这种区别的理由是什么?