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

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

函數里定義一個變量和函數外面給函數里添加一個變量的區別

函數里定義一個變量和函數外面給函數里添加一個變量的區別

繁星點點滴滴 2018-08-03 17:42:32
函數一:function foo() {    var count = 0; }console.log(count) //undefined函數二:function foo() { } foo.count = 0; console.log(count) // 0這兩個count我自己試驗了一下,我的理解是:函數一中的count是函數內作用域定義的變量,函數外訪問不到,而函數二我的理解是也在foo內定義了一個變量,卻在全局作用域中能夠訪問。請問我的理解錯誤在哪里,請糾正;請問這兩個count有什么區別,在實際用途中又有何意義?
查看完整描述

2 回答

?
小怪獸愛吃肉

TA貢獻1852條經驗 獲得超1個贊

你找錯實驗屬性了,window中有count屬性,所以你能打印到count的值,正常的話應該會報錯

函數一的理解是正確的,函數外訪問不到函數內定義的變量

函數二:函數也是對象,也是可以具有屬性的,函數內的變量,函數屬性,全局屬性,這三者是不一樣的

function foo() {    var count = 0; // foo函數內部變量}
foo.count = 0; // foo函數屬性console.log(count) // window屬性

這三個count根本不是同一個變量


查看完整回答
反對 回復 2018-08-05
?
蝴蝶刀刀

TA貢獻1801條經驗 獲得超8個贊

前者是變量,供函數內做些計算操作,函數不執行這個變量就用不到,并且外部不能直接訪問到它。 后者是屬性,供外部訪問。
如果理解有困難,那就把前者看成私有屬性,后者看成公共屬性。

最后那句 console.log(count)也用的不對,那樣是直接訪問window對象的count屬性。


查看完整回答
反對 回復 2018-08-05
  • 2 回答
  • 0 關注
  • 836 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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