解释弹窗输出hello的JS箭头函数的运行逻辑与所属类型
对应JavaScript代码运行原理与类型说明
首先附上可直接运行的原始代码:
let a = () => { return ((b) => alert(b))("hello"); }; a();
代码涉及的函数类型
- 赋值给变量
a的外层函数:是无入参的ES6箭头函数,这类函数没有独立的this指向、不绑定自身的arguments类数组,也不能通过new关键字实例化。 - 外层函数return语句内的
(b) => alert(b):是单入参的ES6箭头函数,同时属于典型的立即执行函数(IIFE)——函数定义完成后不单独保存引用,立刻传入参数完成调用。
完整运行工作流
- 脚本自上而下执行时,首先通过
let声明变量a,把外层箭头函数的内存引用绑定到a上,此阶段外层函数仅完成定义,不会执行内部逻辑。 - 脚本执行到最后一行
a()时,通过绑定的函数引用触发外层箭头函数调用,进入外层函数的独立执行上下文。 - 外层函数运行到return语句时,先在当前作用域内完成内层箭头函数的定义:该函数接收一个形参
b,函数体逻辑为调用浏览器全局弹窗方法alert展示传入的参数值。 - 内层函数定义完成后,紧随其后的
("hello")会立刻把字符串"hello"作为实参传入内层函数完成调用,全程没有为内层函数单独创建变量存储引用。 - 内层函数执行时,把形参
b的实际值替换为传入的"hello",运行alert("hello")逻辑,弹出系统原生的hello提示框。 - 内层函数执行完成后会返回
undefined,这个值会顺着外层函数的return语句向外传递,外层函数执行完毕,整个脚本流程结束。
内容的提问来源于stack exchange,提问作者sai saran
相关产品推荐
相关产品推荐

