国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

js 作用域和變量詳解

2019-11-19 17:32:52
字體:
來源:轉載
供稿:網友

一、說起變量的提升呢,首先我們先看一段簡單的代碼

<!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>

以上代碼執行的結果是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>

執行的結果和第一段代碼一樣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>

以上代碼執行的結果: 第一個彈出的是undefined;第二個結果是I love you。為什么會有這樣的結果呢?

這就跟剛開始提到的變量提升有關系哦~~~下面我們來做下總結:

最后一段代碼展現了2個知識點:

1、變量提升

2、作用域鏈

首先來說作用域鏈,js訪問一個變量時會優先在該作用域內(訪問時的那個作用域)尋找是否聲明過這個變量,如果該變量已經存在,則直接使用它的值,否則會尋找該作用域的‘父作用域/上級作用域',依次類推,直到找到全局作用域為止。

關于變量提升是指: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>

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持武林網!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 祁门县| 溧水县| 商洛市| 临邑县| 陇西县| 盐山县| 安宁市| 乳山市| 汽车| 陆河县| 四平市| 阜阳市| 钦州市| 河源市| 广德县| 上栗县| 龙口市| 秦皇岛市| 青神县| 应城市| 科技| 郁南县| 崇文区| 广元市| 锡林浩特市| 龙海市| 乳源| 涡阳县| 克东县| 周口市| 保康县| 阿拉善盟| 昔阳县| 大名县| 宝鸡市| 监利县| 荣成市| 景德镇市| 合阳县| 广宗县| 宾阳县|