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

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

作用域是函數的作用域,還是說,作用域是變量的作用域?

作用域是函數的作用域,還是說,作用域是變量的作用域?

qq_殺意隆_0 2017-10-30 11:11:27
作用域的主語是?
查看完整描述

4 回答

?
王益達

TA貢獻12條經驗 獲得超15個贊

樓上 @onemoo 關于作用域概念的解釋完全適用 JS,作用域可以指變量,也可以指函數。這里只做個擴展補充:

在?C 語言中,在變量聲明的代碼塊之外是不可見的,通常稱為塊級作用域。例如:

#include
void?main()
{
??int?i?=?1;
??i--;
??if(i?==?0)
??{
??????int?j?=?1;
??}
??printf("%d",?j);
}

其中,變量??j 定義在 if 代碼塊中,外部無法訪問。

而 JavaScript 中,變量的作用域只有全局作用域和函數作用域,沒有 if 、for、while 塊級約束,外部可訪問,例如:

(function?()?{
????var?i?==?1;
??i--;
??if(i?==?0)
??{
??????var?j?=?1;
??}
??console.log(j);
})();
console.log(j);

其中,變量? j 在 if 代碼塊外可以訪問,而在 function 代碼塊外不可訪問。

當然,在 ES6 開始,新增了 let 聲明變量的方式,用法類似于 var,但是所聲明的變量只在 let 所在的代碼塊內有效。let 實際上為 JavaScript 新增了塊級作用域。例如:

{
??let?i?=?1;
??i--;
??if(i?==?0)
??{
??????let?j?=?1;
??}
??console.log(j);
};
console.log(i);

其中,變量 i 和 變量 j? 都不可被訪問。

查看完整回答
1 反對 回復 2017-10-30
  • qq_殺意隆_0
    qq_殺意隆_0
    你們都是大神!
  • qq_殺意隆_0
    qq_殺意隆_0
    js沒有塊級作用域?
  • qq_殺意隆_0
    qq_殺意隆_0
    在for循環中,for(let i=0;i<5;i++){};這個let i雖然寫在for后面的圓括號里,但是難道也相當于放在它后面的大括號代碼塊里?
點擊展開后面2
?
Caballarii

TA貢獻1123條經驗 獲得超629個贊

當然是變量的作用域,指這個變量在哪片范圍里有效

查看完整回答
1 反對 回復 2017-10-30
  • 4 回答
  • 0 關注
  • 2699 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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