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

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

Javascript函數范圍和提升

Javascript函數范圍和提升

Javascript函數范圍和提升我剛剛閱讀了一篇關于Ben Cherry的JavaScript范圍和提升的精彩文章,其中他給出了以下示例:var a = 1;function b() {     a = 10;     return;     function a() {}}b();alert(a);使用上面的代碼,瀏覽器將發出“1”警報。我仍然不確定它為什么會返回“1”。他說的一些事情就像是:所有的功能聲明都被提升到頂部。您可以使用函數來調整變量的范圍。仍然沒有為我點擊。
查看完整描述

3 回答

?
寶慕林4294392

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

功能提升意味著功能被移動到其范圍的頂部。那是,

function b() {  
   a = 10;  
   return;  
   function a() {} }

將被重復者重寫為此

function b() {
  function a() {}
  a = 10;
  return;}

很奇怪,是嗎?

此外,在這種情況下,

function a() {}

表現得一樣

var a = function () {};

所以,從本質上講,這就是代碼所做的事情:

var a = 1;                 //defines "a" in global scopefunction b() {  
   var a = function () {}; //defines "a" in local scope 
   a = 10;                 //overwrites local variable "a"
   return;      }       b();       alert(a);                 //alerts global variable "a"


查看完整回答
反對 回復 2019-05-29
?
婷婷同學_

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

你必須要記住的是它解析整個函數并在執行之前解析所有變量聲明。所以....

function a() {}

真的變成了

var a = function () {}

var a 強制它進入局部范圍,變量范圍是通過整個函數,因此全局變量仍然是1,因為你已經通過使它成為一個函數而聲明了一個局部范圍。


查看完整回答
反對 回復 2019-05-29
?
翻閱古今

TA貢獻1780條經驗 獲得超5個贊

函數a內部懸掛功能b

var a = 1; function b() { 
   function a() {} 
   a = 10; 
   return;} b(); alert(a);

這幾乎就像使用var

var a = 1; function b() { 
   var a = function () {};
   a = 10; 
   return;} b(); alert(a);

該函數在本地聲明,并且a只在本地范圍內進行設置,而不是全局變量。


查看完整回答
反對 回復 2019-05-29
  • 3 回答
  • 0 關注
  • 597 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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