第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

一個沒有理解面試題

一個沒有理解面試題

猛跑小豬 2019-04-21 20:38:35
vartt='aa';functiontest(){alert(tt);vartt='dd';alert(tt);}test();為什么第一個彈出undifine呢?又:vartt='aa';functiontest(){alert(tt);//vartt='dd';//alert(tt);}test();彈出aa?求各位大神解答下
查看完整描述

2 回答

?
達令說

TA貢獻1821條經(jīng)驗 獲得超6個贊

這題總結(jié)下來就2點知識:
1.聲明提升
2.作用域鏈
先說后者,js在訪問一個變量時會優(yōu)先在該作用域(訪問時的那個作用域)內(nèi)尋找是否聲明過該變量,如果該變量已經(jīng)存在,則直接使用它的值,否則它會尋找該作用域的‘父作用域/上級作用域’,以此類推,直到找到全局作用域為止。
關(guān)于聲明提升是指:js在解析的時候總是會將var,function這類關(guān)鍵詞的聲明語句提升至該作用域的最頂部(注意:這里只會提升聲明部分)。
于是你那段代碼等價于下面
javascriptvartt='aa';
functiontest(){
vartt;//這個tt未被賦值,按js的‘規(guī)矩’,它的值是`undefined`
alert(tt);
tt='dd';
alert(tt);
}
test();
所以執(zhí)行的時候返回的是undefined和dd.
廣告
更多精彩內(nèi)容你或許不知道的javascript,css細節(jié)
                            
查看完整回答
反對 回復(fù) 2019-04-21
?
慕沐林林

TA貢獻2016條經(jīng)驗 獲得超9個贊

這樣是全局的:
javascriptvartt='aa';
functiontest(){
alert(tt);
}
test();
這是你的例子:
javascriptvartt='aa';
functiontest(){
alert(tt);
vartt='dd';
alert(tt);
}
test();
在函數(shù)內(nèi)部使用var聲明變量,是局部的。優(yōu)先級高于函數(shù)外部的全局變量。
這個說明js解釋器的解析順序,盡管你的alert(tt)在vartt='dd'前面,但是它還是認為你是在內(nèi)部定義了一個局部變量。
javascriptfunctiontest(){
vartt;
alert(tt);
tt='dd';
alert(tt);
}
                            
查看完整回答
反對 回復(fù) 2019-04-21
  • 2 回答
  • 0 關(guān)注
  • 313 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號