【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
}
  1. 为什么最后输出十个十?
  2. 修改代码将最后输出结果输出为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进阶之旅】 立即执行函数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程