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

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

作用域的3個問題求解答困擾好久了

作用域的3個問題求解答困擾好久了

幻滅丶 2016-06-24 23:47:10
(1) ? ?var i=0;這個i如果在if 或者在for里相當于什么還是局部變量?如果在函數test里在創建一個函數這個i是否可以調用?簡單的說就是比如創建funcition text(0) 定義局部變量var i=0.只要在test函數中不管其中包含多少函數,這個i都會有效是吧?在子函數里直接調用就可以是吧?那么第二個問題如果在test的子函數中聲明一個變量,這個變量是否依然可以在其他子函數中使用呢?<html>?? <head>?? <script?type="text/javascript">?? ????function?test(o)?{?? ????????var?i?=?0;?? ????????if?(typeof?o?==?"object")?{?? ????????????var?j?=?0;?? ????????????for?(var?k?=?0;?k?<?10;?k++)??? ????????????{?? ????????????????document.write(k);?? ????????????}?? ????????????document.write(k);??//還可以訪問到k為10?? ????????}?? ????????document.write(j);?//還可以訪問到j為0?? ????}?? ????var?o?=?new?Object();?? ????test(o);?? </script>?? </head>?? </html>(2) ? 為什么第一個alert(scope)顯示undefined,不是外面有全局函數了嗎?<html>?? <head>?? <script?type="text/javascript">?? ???var?scope?=?"global";?? ???function?f()?{?? ???????alert(scope);??//顯示undefined?? ???????var?scope?=?"local";?? ???????alert(scope);?? ???}?? ???f();?? </script>?? </head>?? </html>(3)沒錯我就是(2).我又來了JS有hoisting這個東西也就是變量聲明提升。var scope=local應該擠到第一個位置來,那么就意味著先聲明后執行。為什么在這里會無效呢?<html>?? <head>?? <script?type="text/javascript">?? ???var?scope?=?"global";?? ???function?f()?{?? ???????alert(scope);??//顯示undefined?? ???????var?scope?=?"local";?? ???????alert(scope);?? ???}?? ???f();?? </script>?? </head>?? </html>
查看完整描述

2 回答

?
幻滅丶

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

查了一晚上資料自己解決了,有時間寫個作用域的手記吧

查看完整回答
反對 回復 2016-06-25
?
檸檬酸鈉

TA貢獻331條經驗 獲得超534個贊

函數內因為有var scope = 'local',所以在外面的申明無效,所以就成undefined了,我也是今天剛知道的http://www.xianlaiwan.cn/wenda/detail/320994

把var去掉就正常了

查看完整回答
反對 回復 2016-06-25
  • 2 回答
  • 0 關注
  • 1768 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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