日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

今天,我們來初步了解一下作用域和閉包的相關知識點,因為是初步了解,所有不會深入,不會太難,希望對大家有所幫助。

初識JS中的作用域和閉包

 

作用域是什么?

說白了,作用域就是一個代碼區域,或者也可以理解成為一個運行環境。

JS中有兩種作用域,全局作用域和函數作用域。

// window環境
var a = 123;
var b = 234;
var c = 456; 

//函數作用域

function A(){
 var a = 123;
 var b = 234;
 var c = 456; 
 } 
A();

全局作用域:直接在腳本中寫代碼,在全局作用域中聲明得變量,會提升到腳本頂部,并成為window屬性。(前幾節中有涉及)

函數作用域:在函數中書寫代碼,聲明的變量會提升到函數的頂部,不會成為全局屬性,在函數內部聲明的變量不會污染全局變量。

因此,在編程過程中,盡可能的將功能封裝在函數中。

立即執行函數(IIFE)

當函數成為一個表達式的時候,既不會提升,也不會污染全局變量。

將函數變成表達式的方法之一,就是用小括號就函數包裹起來。代碼如下:

( function 函數名(){
 函數體; 
 })

如此一來,這樣的函數就無法通過函數名來調用了。

如果,函數作為表達式并且立即調用,這樣的函數就被成為立即實行函數:

( function 函數名(){
 函數體; 
 })();

( function 函數名(){
 函數體; 
 }());

調用的小括號可以在里也可以在外。

由于大部分情況下,函數的函數名不起作用,因此,立即執行函數一般不書寫函數名,沒有函數名的函數,稱之為匿名函數。

作用中可以使用的變量

在全局作用域下只能使用全局作用中聲明的變量(包括函數)。

在函數作用域下,既可以使用函數作用域中聲明的變量,也可以使用外部環境中聲明的變量(包括函數)。

var a = 123;
console.log(a);打印出來123
function A(){
 console.log(a);//也可以打印出來123;
 var b = 234;
} 
A();
console.log(b);//這里會報錯,因為b未定義。
初識JS中的作用域和閉包

 

內部變量和外部變量沖突的時候,使用內部變量,在內部沒有的情況下,依次向外層環境中找。

內部可以使用外部,但外部不可能使用內部的(你的就是我的,我的還是我的)。

初探閉包

從嚴格意義上來講,閉包是一種現象。

閉包就是內部函數可以使用外部函數環境中的變量。

天就講到這里,關于閉包的知識,后期會進行詳細的解說。

分享到:
標簽:作用 JS
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定