立即执行函数顾名思义是定义一个函数并且立即调用。语法包括两部分一个部分是圆括号里面定义一个匿名函数,并在后面加上() 表示立即执行。
语法
(function(){ statements})()
或者
(function(){statements}())
函数里有独立的定义域 外面访问不了内部的变量。
单例模式
把立即执行函数赋值给一个变量,这个变量保存的不是这个函数而是返回的结果
var result = (function () {
var name = "Barry";
return name;
})();
// IIFE 执行后返回的结果:
result; // "Barry"
单例模式是一种常见的设计模式,单例模式能够保证一个类仅有唯一的实例,并提供一个全局访问点,可以很好节省内存。实现如下:
function Animal(name) {
this.name = name
}
const AnimalSingle = (function () {
let animalSingle = null
return function (name) {
if(animalSingle){
return animalSingle
}
return animalSingle = new Animal(name)
}
})();
const animal1 = new AnimalSingle('dog')
const animal2 = new AnimalSingle('cat')
console.log(animal1.name); // dog
console.log(animal2.name); // dog