js的函式和匿名函式和作用域

2021-09-12 22:59:36 字數 2043 閱讀 7473

概念:沒有名字的函式

匿名函式的自呼叫:第一種(function())();

第二種(function()());

通過函式表示式宣告的函式

函式表示式宣告:

var getday=function();

//通過函式表示式宣告的函式,呼叫時,getday()----代表返回值

getday-----代表的為整個函式體

在呼叫函式時,瀏覽器每次會傳遞進兩個隱含的引數

-----------上下文物件,this

-----------arguments

arguments:是乙個偽陣列,使用者輸入或傳遞引數的集合,在函式內部存在

可獲取使用者輸入的值和傳多少引數,即可以提取實參,儲存起來,擁有長度

function getsum()

return sum;

}console.log(getsum(1,2,3)); //6

**概念:變數可以起作用的範圍**
----------全域性變數:var宣告----可以在程式的任何地方宣告,除了函式

----------區域性變數:作用於區域性的範圍,eg:在函式內宣告的變數,只能作用於函式的內部,並不

能作用於其他位置

塊級作用域:

塊級作用域: 任何一對中包含的就是塊級作用域,現階段js可以被看作並沒有塊級作用域

eg:宣告的變數在括號外仍然可以被使用,,,函式除外!!!!

函式內--var--宣告的變數只能作用於函式內部,函式外並不能被使用

沒有用「var」宣告的變數------會成為全域性變數(隱式全域性變數)

隱式全域性變數和全域性變數

隱式全域性變數:沒有用var 宣告的變數----------num=12;

全域性變數:在全域性作用域中用var 宣告的變數--------var num=12;

---隱式全域性變數------可被刪掉---delete (變數)-----

---全域性變數----並不能被刪除。除非頁面關閉-----無用的全域性變數可能會造成記憶體洩漏

作用域鏈

作用域鏈是函式被建立的作用域中物件的集合,其中的物件是包括-----,

-----作用域中的變數物件(宣告的變數),區域性的變數物件,全域性的變數物件

eg: 全域性作用域---0級作用域

函式內部---1級作用域

函式內部的內部---2級作用域

//變數會從當前的作用域往外查詢,找到離之最近的作用域中查詢此變數是否宣告,

-----有,直接輸出,沒有,接著往外查詢(父級作用域)

function f1()

f3();

}f2();

}f1();

預解析:

瀏覽器在解析js**時會提前將變數的宣告和函式的宣告提公升到 

---------------當前作用域的最前面,但並不會將其賦值提公升

console.log(num); undefined

var num=10;

cosole.log(num); 10

f1(); //輸出----函式

function f1()

轉變成:

function f1()

f1();

f2(); //將會報錯!!!!,並沒有f2()此種寫法

var f2=function();

轉變成:(將var f2提公升到作用域的最前面去,此時並沒有給f2賦值為函式)

var f2;

f2();

function();

Python函式作用域和匿名函式

匿名函式的定義 全域性變數和區域性變數的概念 global 全域性變數 和 nonlocal 區域性變數 閉包 遞迴 匿名函式 匿名函式 lambda 語法規則 lambda 引數 表示式 lambda匿名函式的格式 冒號前是引數,可以有多個,用逗號隔開,冒號右邊的為表示式 lambda返回值是乙個...

Js 函式作用域和塊作用域

你不知道的js 第二版上捲第三章筆記 全域性作用域 定義在函式外部的變數,函式內部可以呼叫 區域性作用域 定義在函式內部的變數,函式外部不可以呼叫 塊級作用域 如同下面這個例子 for var i 1 i 10 i console.log i,b 輸出的還是 10 100!說明js沒有塊級作用域當我...

js 函式中的作用域和作用域鏈

js看似有 塊級作用域 其實它沒有,取而代之的是 函式作用域 在乙個 塊 一對花括號內 定義的變數在 塊外部是不可見的,且在 塊執行結束後被釋放掉。定義在該函式中的引數和變數在函式外部不可見 例子1 而乙個函式內部任何位置定義的變數,在該函式內部任何地方都可見 例子2 解釋二 也就是說,變數不僅在宣...