假设这是一个示例代码段,我们需要告诉该代码段可能的输出并为其提供解释
var name = 'Zakir'; (() => { name = 'Rahul'; return; console.log(name); function name(){ let lastName = 'Singh'; } })(); console.log(name);
让我们以幼稚的方式逐一解决这个问题
1→'Zakir'存储在变量名中
3→我们进入一个自执行的匿名函数
4→变量名称重新初始化为“ Rahul”
5→遇到return语句,所以我们退出函数
15→将名称变量打印到当前值为“ Rahul”的屏幕上
因此,最终输出将是
Rahul
但是,不幸的是,这是错误的,让我们再次遍历代码以查看出错的地方,这一次牢记了变量和函数的概念。
1→'Zakir'存储在变量名中
3→我们进入一个自执行的匿名函数
当我们进入函数时,函数将进行提升,并且将name()
在自执行函数底部定义的函数提升到自执行函数的最顶部,并且在该中间状态下,代码将类似于-
let name = 'Zakir'; (() => { let name; name = 'Rahul'; return; console.log(name); name = function(){ let lastName = 'Singh'; } })(); console.log(name);
请注意,只要将变量/函数提升到其作用域的顶部,就只会对其进行定义和初始化,并会在其实际位置对其进行初始化,而在顶部则是未定义的,但是它存在。
因此,当变量名被重新初始化时,是局部变量名被重新初始化,而不是全局变量,因此,在此之后,我们退出自执行函数,并将全局变量名打印到控制台,该控制台仍然保存着“ Zakir” 。因此,输出将是-
输出结果
Zakir
本文向大家介绍什么是JavaScript中的匿名函数?,包括了什么是JavaScript中的匿名函数?的使用技巧和注意事项,需要的朋友参考一下 函数表达式与函数声明相似,并且具有与函数声明相同的语法。可以定义“命名”函数表达式(例如,在调用堆栈中可能使用表达式的名称)或“匿名”函数表达式。 匿名函数表达式的示例(未使用名称)- 可以使用引用该函数的变量名来调用此函数- 总之,匿名函数是未存储但与变
本文向大家介绍什么是JavaScript中的自调用匿名函数?,包括了什么是JavaScript中的自调用匿名函数?的使用技巧和注意事项,需要的朋友参考一下 在JavaScript中,用括号括起来的函数称为“立即调用函数表达式”或“自执行函数”。 包装的目的是为了命名空间并控制成员函数的可见性。它将代码包装在函数范围内,并减少了与其他库的冲突。这就是我们所说的立即调用函数表达式(IIFE)或自执行匿
本文向大家介绍浅析Javascript匿名函数与自执行函数,包括了浅析Javascript匿名函数与自执行函数的使用技巧和注意事项,需要的朋友参考一下 函数是JavaScript中最灵活的一种对象,这里只是讲解其匿名函数的用途。匿名函数:就是没有函数名的函数。 函数的定义,大致可分为三种方式: 第一种:这也是最常规的一种 第二种:这种方法使用了Function构造函数,把参数列表和函数体都作为字符
问题内容: 最近,我将json2.js的当前版本与项目中使用的版本进行了比较,并发现函数表达式的创建和自我执行方式有所不同。 用于将匿名函数包装在括号中然后执行的代码, 但是现在它将自动执行的函数包装在括号中。 有通过CMS在接受答案的注释解释JavaScript的封装匿名函数的语法是“既:和有效。” 我想知道有什么区别吗?前者是否通过留下全局匿名函数来占用内存?括号应位于何处? 问题答案: 它们
问题内容: 在javascript中,存在创建匿名函数并立即调用它的常见模式(通常称为自执行匿名函数或立即调用的函数表达式)。 使用Java 8 lambda,是否有标准方法可以复制此行为?有点像。 这个问题基本上提出了相同的问题,但是对于Java7。我正在明确地寻找使用lambda的构造。 问题答案: 也不是没有声明类型。由于Java是静态类型的语言,并且函数不是一等公民,因此编译器需要知道la
在javascript中,常见的模式是创建匿名函数并立即调用它(通常称为自动执行匿名函数或立即调用的函数表达式)。 对于Java8 lambdas,是否有复制这种行为的标准方法?类似于