




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第JavaScript中的變量提升和函數提升目錄前言為什么有變量提升javascript變量提升和函數提升總結
前言
在js中對變量進行操作后打印值經常會出現undefined的現象。其實原因是因為js中有一個叫做變量提升的功
舉例:
vardata="lyyyyy";
getData();
functiongetData(){
//第一次打印
console.log("data值為:",data);
vardata="yyyyyyy";
//第二次打印
console.log("data值為:",data);
}
打印的值第一個為undefined,而第二個打印的值為yyyyy.
原因:
在執行getData()方法的時候會在函數內部首先將變量的聲明提升到第一步。然后再聲明函數內部的函數(如果函數內部有函數的話)。之后才會按照方法內部的邏輯先后順序執行代碼。前兩步只是聲明!!!看到這里應該就已經知道為什么會有上面那樣的結果了。
實際的方法內部代碼執行順序應該是這樣的:
functiongetData(){
//一。聲明變量
vardata;
//二。聲明函數(如果函數內部有函數的話)
//三。按照代碼的順序執行
console.log("data值為:",data);
data="yyyyyyy";
//第二次打印
console.log("data值為:",data);
}
看到拆分后的代碼執行順序對結果也就不迷茫了。
為什么有變量提升
那么為什么會出現變量提升這個現象呢
其實js和其他語言一樣,都要經歷編譯和執行階段。而js在編譯階段的時候,會搜集所有的變量聲明并且提前聲明變量,而其他的語句都不會改變他們的順序,因此,在編譯階段的時候,第一步就已經執行了,而第二步則是在執行階段執行到該語句的時候才執行。
javascript變量提升和函數提升
變量提升是把變量提升提到函數頂部。需要說明的是,變量提升只是提升變量的聲明,并不會把賦值也提升上來。函數提升是把整個函數都提到前面去。函數表達式不能被提升,函數聲明形式能被提升。
!DOCTYPEhtml
htmllang="en"
head
/head
body
script
//變量提升
functiontest(){
a=2;
vara;
console.log(a);
//2
}
test();
//變量提升,不會把賦值也提升上來
varv='HelloWorld';
(function(){
varv;
console.log(v);
//undefined
v='Iloveyou';
})();
//函數聲明形式能被提升
functionmyTest(){
foo();
functionfoo(){
console.log("helloworld");
//helloworld
}
}
myTest();
//函數表達式不能被提升
functionmyTest2(){
foo();
//fooisnotafunction
varfoo=functionfoo(){
console.log("helloworld");
}
}
myTest2();
/script
/body
/html
!DOCTYPEhtml
htmllang="en"
head
/head
body
script
//輸出GoodbyeJack
varname='World!';
(function(){
if(typeofname==='undefined'){
varname='Jack';
console.log('Goodbye'+name);
}else{
console.log('Hello'+name);
})();
//輸出HelloWorld!
varname2='World!';
(function(){
if(typeofname2==='undefined'){
name2='Jack';
console.log('Goodbye'+name2);
}else{
console.log('Hello'+name2);
})();
//輸出HelloWorld!
varname3='World!';
(function(){
if(typeof3==='undefined'){
varname3='Jack';
console.log('Goodbye'+name3);
}else{
console.log('Hello'+3);
})();
/script
/body
/html
總結
1.js會將變量的聲明提升到js頂部執行,因此對于這種語句:vara=2;其實上js會將其分為vara;和a=2;兩部分,并且將var
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 預防感冒安全課件
- 儀器管理標識培訓
- 科室職業健康培訓
- 音樂課件軟件小學生
- 水肌酸產品項目建設管理方案(參考模板)
- 電網側獨立儲能示范項目環境影響報告書(范文模板)
- 2025年脲醛塑料項目合作計劃書
- xx片區城鄉供水一體化項目風險管理方案(范文模板)
- 2025年真空電子器件及零件項目建議書
- 2025年抗潰瘍病藥項目建議書
- 美的集團數字化轉型之路
- 執業藥師聘任協議書
- 2025遼寧沈陽水務集團有限公司招聘32人筆試參考題庫附帶答案詳解
- 2025至2030中國無菌海綿市場行情監測與未來投資商機研究報告
- 《文物修復與保護基礎》課件
- 外貿知識培訓課件
- 2025年度風力發電場電力運維保障協議
- 企業法務管理及風險防范措施
- 七年級英語下冊單詞表2025
- 2023-2024學年湖南省婁底一中七年級(下)期中數學試卷 (含解析)
- JJF 1183-2025溫度變送器校準規范
評論
0/150
提交評論