【JavaScript进阶之旅】 立即执行函数
2021/8/1 14:35:53
本文主要是介绍【JavaScript进阶之旅】 立即执行函数,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- 立即执行函数
- 写法
- 执行
- 特性
- 更多写法
- 三道经典面试题
- 面试题一
- 方法一
- 方法二
- 面试题二
- 面试题三
立即执行函数
立即执行函数简称IIFE
,顾名思义,立即执行并且执行完毕后销毁
immediately invoked function expression
写法
自动执行函数,执行完成后立即释放
// 写法一 (function(){})(); // 写法二 (function(){}()); // W3C建议
只要括号包起来就是表达式了
(function(){})
执行
表达式才能被执行符号执行
(function(){})(); // 表达式 -》 可以执行 var test1 = function(){}(); // 可以执行 function test(){}(); // 报错 -》 不是表达式
特性
立即执行函数,执行完毕后就销毁
var test = function(){ console.log(1); } console.log(test); // f(){console.log(1);}
var test2 = function(){ console.log(2); }(); console.log(test2); /** 2 undefinde */
更多写法
函数声明变为表达式的方法
+ - ! || &&
+ function test(){}(); - function test1(){}(); ! function test2(){}(); ...
三道经典面试题
面试题一
function test(){ var arr = []; for(var i = 0; i < 10; i++){ arr[i] = function(){ document.write(i + ''); } } return arr; } var myArr = test(); for(var j = 0; j < 10; j++){ myArr[j](); // 10 10 10 10 10 10 10 10 10 10 }
- 为什么最后输出十个十?
- 修改代码将最后输出结果输出为0-9,你能用多少种方法实现?
方法一
function test(){ var arr = []; for(var i = 0; i < 10; i++){ arr[i] = function(num){ document.write(num + ''); } } return arr; } var myArr = test(); for(var j = 0; j < 10; j++){ myArr[j](j); }
方法二
function test(){ var arr = []; for(var i = 0; i < 10; i++){ (function(j){ arr[j] = function(){ document.write(j + ''); } }(i)); } return arr; } var myArr = test(); for(var j = 0; j < 10; j++){ myArr[j](); }
面试题二
var fn = ( function test1(){ return 1; }, function test2(){ return '2'; } )(); console.log(typeof(fn)) // string // ==================== var fn = ( function test1(){ return 1; }, function test2(){ return '2'; } ); console.log(typeof(fn)) // function
面试题三
var a = 10; if(function b(){}){ a += typeof(b); } console.log(a); // 10undefined // 表达式忽略函数名
写在后面:
觉得写的还行,评论,收藏,点赞,关注哦~
这篇关于【JavaScript进阶之旅】 立即执行函数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)
- 2024-05-30【Java】百万数据excel导出功能如何实现