• 手机版

    扫码体验手机版

  • 微信公众号

    扫码关注公众号

国内首家协议开发

软芯音视解码保护平台

在线
客服

发布
需求

在线
聊天

天盟
APP

天盟APP下载

关注
微信

微信扫一扫访问
顶部

关于闭包的问题,求高手解答!

var fn1 = function () {    var a = 10;    var b = function () { alert(123); };    var c = {        name: "lazy",        year: 1981    }}var fn2 = function () {    this.a = 10;    this.b = function () { alert(123); };    this.c = {        name: "lazy",        year: 1981    }}var fn3 = {    a: 10,    b: function (x) { alert(this.a + x); },    c: {        name: "lazy",        year: 1981    }}问题:以上三种定义函数/对象的方式,有什么区别

免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。

版权声明:作者保留权利,不代表天盟立场。

使用道具 举报

全部参与3

第一种是函数内部变量,a,b,c属于私有变量,外界无法直接访问,可通过return返回或者闭包方法访问;
第二种a,b,c是定义函数(构造函数)的属性,当外部创建它的实例(new fn2())后,可访问;
varfn=newfn2();console.log(fn.a)//10第三种是json对象,内部a,b,c是键,对应的是值,外部可直接通过fn3.a访问
console.log(fn3.a)//10

使用道具 举报

你可以看一下:自定义对象,函数定义与调用
其实,你这几种情况都不是闭包,
闭包条件:1、函数嵌套,2、内部函数引用外部函数变量
举个栗子:
varfn1=function(){vara=3;retrunfunction(){returna;}}console.log(fn1()())//输出a的值闭包的作用:我们可以在全局范围内访问到函数内部的变量,并且私有化变量,因为我们不能对函数内部的变量进行更改。

使用道具 举报

区别不大

使用道具 举报

发新帖

发布任务需求已有1031290位用户正在使用天盟网服务

发布分类: *
任务预算: *
需求内容: *
手机号码: *
任务商家报价为
  • 预算价 :
  • 成交价 :
  • 完工期 :
  • 质保期 :

* 最终任务项目以服务商报价、双方协商为准!