亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于閉包的問題,求高手解答!

關于閉包的問題,求高手解答!

GavinZeng 2016-10-11 09:56:56
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 回答

已采納
?
stone310

TA貢獻361條經驗 獲得超191個贊

第一種是函數內部變量,a,b,c屬于私有變量,外界無法直接訪問,可通過return返回或者閉包方法訪問;

第二種a,b,c是定義函數(構造函數)的屬性,當外部創建它的實例(new fn2())后,可訪問;

var?fn=new?fn2();
console.log(fn.a)????//10

第三種是json對象,內部a,b,c是鍵,對應的是值,外部可直接通過fn3.a訪問

console.log(fn3.a)???//10


查看完整回答
1 反對 回復 2016-10-11
?
堂堂堂堂糖糖糖童鞋

TA貢獻101條經驗 獲得超58個贊

你可以看一下:自定義對象,函數定義與調用

其實,你這幾種情況都不是閉包,

閉包條件:1、函數嵌套,2、內部函數引用外部函數變量

舉個栗子:

var?fn1?=?function?()?{
????var?a?=?3;
????retrun?function?()?{
????????return?a;
????}
}
console.log(fn1()())//輸出a的值

閉包的作用:我們可以在全局范圍內訪問到函數內部的變量,并且私有化變量,因為我們不能對函數內部的變量進行更改。

查看完整回答
3 反對 回復 2016-10-11
?
qq_光明_2

TA貢獻3條經驗 獲得超3個贊

區別不大

查看完整回答
反對 回復 2016-10-11
  • 3 回答
  • 0 關注
  • 1467 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號