当前位置: 首页 > 面试题库 >

什么是js的闭包?有什么作用,用闭包写个单例模式

崔琦
2023-03-14
本文向大家介绍什么是js的闭包?有什么作用,用闭包写个单例模式相关面试题,主要包含被问及什么是html" target="_blank">js的闭包?有什么作用,用闭包写个单例模式时的应答技巧和注意事项,需要的朋友参考一下

参考回答:

MDN对闭包的定义是:闭包是指那些能够访问自由变量的函数,自由变量是指在函数中使用的,但既不是函数参数又不是函数的局部变量的变量,由此可以看出,闭包=函数+函数能够访问的自由变量,所以从技术的角度讲,所有JS函数都是闭包,但是这是理论上的闭包,还有一个实践角度上的闭包,从实践角度上来说,只有满足1、即使创建它的上下文已经销毁,它仍然存在,2、在代码中引入了自由变量,才称为闭包

闭包的应用:

模仿块级作用域。2、保存外部函数的变量。3、封装私有变量

单例模式:

var Singleton = (function(){
    var instance;
    var CreateSingleton = function (name) {
        this.name = name;
        if(instance) {
        return instance;
        }
        // 打印实例名字
        this.getName();
        // instance = this;
        // return instance;
        return instance = this;
	}
	// 获取实例的名字
    CreateSingleton.prototype.getName = function() {
  	  console.log(this.name)
    }
    return CreateSingleton;
})();
	// 创建实例对象1
    var a = new Singleton('a');
	// 创建实例对象2
    var b = new Singleton('b');
    console.log(a===b);

 

 类似资料:
  • 本文向大家介绍js 闭包 有什么作用?相关面试题,主要包含被问及js 闭包 有什么作用?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: (1)什么是闭包: 闭包是指有权访问另外一个函数作用域中的变量的函数。 闭包就是函数的局部变量集合,只是这些局部变量在函数返回后会继续存在。闭包就是就是函数的“堆栈”在函数返回后并不释放,我们也可以理解为这些函数堆栈并不在栈上分配而是在堆上分配。当在一个函

  • 问题内容: 我正在阅读面向对象的Javascript,并发现了闭包的概念。我不太明白为什么以及何时使用它。其他语言(例如Java)也有闭包吗?我基本上想了解了解闭包的概念如何帮助我改善编码。 问题答案: 闭包是具有绑定变量的第一类函数。 大致意味着: 您可以将闭包作为参数传递给其他函数 闭包存储创建时存在的词法作用域中某些变量的值 Java最初没有对闭包的语法支持(Java 8中引入了闭包),尽管

  • 本文向大家介绍什么是闭包(closure)为什么要用它相关面试题,主要包含被问及什么是闭包(closure)为什么要用它时的应答技巧和注意事项,需要的朋友参考一下 闭包是指有权访问另一个函数作用域中变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量,利用闭包可以突破作用链域,将函数内部的变量和方法传递到外部。 闭包的特性: 1.函数内再嵌套函数

  • 问题内容: 我正在尽最大的努力来解决JavaScript闭包问题。 通过返回一个内部函数,我可以访问其直接父级中定义的任何变量。 这对我有用吗?也许我还没有完全解决这个问题。我在网上看到的大多数示例都没有提供任何真实的代码,只是模糊的示例。 有人可以告诉我现实世界中使用闭包吗? 例如这个吗? 问题答案: 我用闭包来做类似的事情: 如您所见,现在有一个对象,带有一个方法()调用,该方法仅存在于闭包内

  • 本文向大家介绍什么是闭包?优缺点分别是什么?相关面试题,主要包含被问及什么是闭包?优缺点分别是什么?时的应答技巧和注意事项,需要的朋友参考一下 上面就是闭包,有独立的作用域,且作用域的变量不会在程序中释放

  • 我刚刚遇到了这个代码: 注意箭头函数后面跟着一个闭包。这里为什么使用闭包? 请参阅本回购协议以供参考:https://github.com/prograhammer/vue-pizza/blob/master/src/http/router.js#L33