概念:沒有名字的函式
通過函式表示式宣告的函式匿名函式的自呼叫:第一種(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 解釋二 也就是說,變數不僅在宣...