js 作用域和變量詳解
一、說起變量的提升呢,首先我們先看一段簡單的代碼
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <script> var v = 'hello world'; alert(v); </script> </body> </html>
以上代碼執(zhí)行的結(jié)果是hello world
然后在看一段代碼:
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <script> var v='Hello World'; (function(){ alert(v); })(); </script> </body> </html>
執(zhí)行的結(jié)果和第一段代碼一樣hello world
好了,接下來在看這段代碼:
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <script> var v='Hello World'; (function(){ alert(v); var v='I love you'; alert(v); })(); </script> </body> </html>
以上代碼執(zhí)行的結(jié)果: 第一個彈出的是undefined;第二個結(jié)果是I love you。為什么會有這樣的結(jié)果呢?
這就跟剛開始提到的變量提升有關系哦~~~下面我們來做下總結(jié):
最后一段代碼展現(xiàn)了2個知識點:
1、變量提升
2、作用域鏈
首先來說作用域鏈,js訪問一個變量時會優(yōu)先在該作用域內(nèi)(訪問時的那個作用域)尋找是否聲明過這個變量,如果該變量已經(jīng)存在,則直接使用它的值,否則會尋找該作用域的‘父作用域/上級作用域',依次類推,直到找到全局作用域為止。
關于變量提升是指:js在解析的時候總是會將var,function這類關鍵詞的聲明語句提升至作用域的最頂部(注意:這里只會提升聲明的部分,賦值不會被提升)
所以,由此看來,上述的那段代碼就等于:
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <script> var v='Hello World'; (function () { var v; //先將該作用域下的變量提升,但沒有賦值 alert(v); //所以此時是undefined var v='I love you'; alert(v); //I love you })(); </script> </body> </html>
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!
相關文章
微信小程序?qū)崿F(xiàn)滑動/點擊切換Tab及scroll-left的使用
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)滑動/點擊切換Tab,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-04-04js中forEach,for in,for of循環(huán)的用法示例小結(jié)
這篇文章主要介紹了js中forEach,for in,for of循環(huán)的用法,結(jié)合實例形式總結(jié)分析了js中forEach,for in,for of循環(huán)相關使用技巧與操作注意事項,需要的朋友可以參考下2020-03-03JavaScript事件學習小結(jié)(五)js中事件類型之鼠標事件
這篇文章主要介紹了JavaScript事件學習小結(jié)(五)js中事件類型之鼠標事件的相關資料,非常不錯具有參考借鑒價值,需要的朋友可以參考下2016-06-06在JavaScript中使用for循環(huán)的方法詳解
在本文中,我們將學習 JavaScript 中提供,的 for 循環(huán),我們將了解如何在 JavaScript 中使用 for...in 循環(huán)語句、其語法、工作原理示例、何時使用或避免使用它以及我們可以使用哪些其他類型的循環(huán),需要的朋友可以參考下2023-07-07

Bootstrap Tooltip顯示換行和左對齊的解決方案