回撥,閉包,return簡單總結
1 回撥函式:一個函式的 函式名 作為另外一個函式的 實參 傳入
2 函式的閉包:一個函式是另外一個函式的返回值
3 函式名代表函式整體,函式名+()代表函式的執行
形參可以傳入的值,形參可以傳入任何型別的值,包括簡單資料型別和複雜資料型別,其中複雜資料型別包括了函式
function fn (num1,num2,rule){ return rule(num1,num2); } function rule1(num1,num2){ return num1 + num2 ; } function rule2(num1,num2){ return num1 - num2 ; } function rule3(num1,num2){ return num1 * num2 ; } function rule4(num1,num2){ return num1 / num2 ; } console.log(fn(3,6,rule1)); console.log(fn(3,6,rule2)); console.log(fn(3,6,rule3)); console.log(fn(3,6,rule4));
控制檯輸出:
9
-3
18
0.5
因為在定義函式fn的時候,rule(num1,num2),中 rule 被定義為只能傳入函式,所以只能在 形參rule的位置傳入實參是個函式,而rule函式定義了num1 和 num2 是什麼型別的值
console.log(fn(null,6,rule1)); 6 console.log(fn(undefined,6,rule1)); NaN console.log(fn(rule1(8,4),rule2(4,2),rule3)) 24 console.log(fn(rule1(8,4),rule2(4,2),rule3 ,rule4)) 24
多傳進來的值會被忽略
需要注意的是函式名可以被傳入,因為在建立函式的時候,函式名指向了堆記憶體中的地址,傳入該地址,則代表引用該函式。
一旦加了 ( ).就代表呼叫並且執行了該函式
console.log(fn(3,6,rule1()));
這行程式碼會報錯,因為 rule1() 被直接執行了,此時傳入的是 rule1 () 執行後的返回值,
函式名代表函式整體,函式名+()代表函式的執行小案例解析
(1) 返回函式名
console.log(fn()); function fn(){ return fn1; } function fn1(){ console.log("這是函式閉包的運用"); }
控制檯輸出:
function fn1(){
console.log(“這是函式閉包的運用”);
}
(2) 返回 函式名+()
console.log(fn());
function fn(){
return fn1;
}
function fn1(){
console.log("這是函式閉包的運用");
}
控制檯輸出:
這是函式閉包的運用
4 注意:
A 函式不呼叫則不執行,函式名代表函式整體,可以進行輸出,列印,等操作,也可以作為其他函式的引數傳入
B 函式名+()則代表該函式被執行了,無論其被列印、輸出,或者被其他函式呼叫,或者作為其他函式的返回值,結果都是其執行之後所返回的內容
C 函式名+() 執行之後返回值得內容有以下幾種情況:
a 當函式體內沒有寫 return 的時候,沒有返回值,如果輸出console.log(fn());(fn()代表一個定義過的函式)結果為undefined ;
b 當函式體內寫了 return 之後,後面沒有跟內容,預設返回值是 undefined
c 函式體內寫了 return ,後面也跟了內容,那麼返回後面跟的內容;
d 函式語句執行到 return 之後,後面的語句不會執行。
相關推薦
回撥,閉包,return簡單總結
1 回撥函式:一個函式的 函式名 作為另外一個函式的 實參 傳入 2 函式的閉包:一個函式是另外一個函式的返回值 3 函式名代表函式整體,函式名+()代表函式的執行 形參可以傳入的值,形參可以傳入任何型別的值,包括簡單資料型別和複雜資料型別,其中複雜
python開發函數進階:命名空間,作用域,函數的本質,閉包,內置方法(globales)
問題 總結 加載 自己的 ger 作用域 範圍 沒有 概念 一,命名空間 #局部命名空間#全局命名空間#內置命名空間 #三者的順序#加載順序 硬盤上——內存裏#內置-->全局(從上到下順序加載進來的)-->局部(調用的時候加載) 1 #!/usr/bin/
函數名,閉包,裝飾器
span play 分享 技術 splay 容器類 函數的參數 spl pri #輸出的__closure__有cell元素 :是閉包函數 def func(): name = ‘eva‘ def inner(): print(name)
python之路——函數名的應用,閉包,叠代器
glob 協議 字符串 () closure nco 異常處理 類類型 單向 # ##函數名的應用# def func():# print(666)# func()## 1.函數名就是函數的內存地址# print(func) #結果<functio
day011 函式名的運用,閉包,迭代器
主要內容: 1.函式名的使用以及第一類物件 2.閉包 3.迭代器一、函式名的運用 函式名就是變數名,命名規則與變數名一樣。 函式名儲存的是函式的記憶體地址。 1、檢視函式名的記憶體地址 """python def inf(): print("疏影"
函式程式設計(名稱空間,閉包,裝飾器,)
一、名稱空間 名稱空間 namespace 存放名字的地方 x=1 名稱空間存放 x 和 x與1繫結關係 類似{x:id(1)} 1.1.名稱空間分三種: 1.locals 是函式內的名稱空間,包括區域性變數和形參 locals() 2.globals
[Swift4] Swift筆記 2.0(函式2,閉包,列舉,結構體)
函式,閉包,列舉,結構體 函式多值返回 // 利用 元組 返回多個值 // 利用 陣列 輸入多個值 func calcMaxmain( values :[Int])-> (max :
python-第一類物件,閉包,迭代器
# def fn(): # print("我叫fn") # fn() # print(fn) # <function fn at 0x0000000001D12E18> # fn() # gn = fn # 函式名可以進行賦值 # print(gn) # gn() # fn =
(十一)函式名的使用,閉包,迭代器
⼀. 函式名的運用. 函式名是⼀個變數, 但它是⼀個特殊的變數, 與括號配合可以執⾏函式的變數. 1.函式名的記憶體地址 def func(): print("呵呵") print(func) 結果: <funct
函式補(遞迴,閉包,巢狀)
變數作用域 - Python中,程式的變數並不是在哪個位置都可以訪問的,訪問許可權決定於這個變數是在哪裡賦值的 - Python作用於一共有四種 - L(local)區域性作用域,在函式,類等內部可見 - E(enclosing)閉包函式外的函式中 - G
day 10 函式名的運用,閉包,迭代器
函式名的本質 函式名本質上就是函式的記憶體地址 函式名的五種運用: 1、函式名是一個變數 def func(): print(666) print(func) # 函式的記憶體地址 <function func at 0x000002B6D2559AE8> 2、
python作用域,閉包,裝飾器
""" 瞭解裝飾器之前,學習路線 python函式的作用域 python的閉包 裝飾器 """ python函式的作用域 LEGB L:local函式內部作用域 #函式內部的 E:enclosing 函式內部與內嵌函式之間 #函式外面還有一層函式,外層函式的變數 G:global
函式表示式,遞迴,作用域,作用域鏈,閉包,閉包與變數
函式表示式 函式表示式是JavaScript中的一個既強大又容易令人困惑的特性。定義函式的方式有兩種:一種是函式宣告(沒錯,不同於C語言之類的),另一種就是函式表示式。 函式申明(這相當於C語言的函式定義)的語法是這樣的: function functionName(a
回調函數參數問題,閉包解決方案示例
length fun spa nts .get tel col onclick clas 1.function init4() { 2. var pAry = document.getElementsByTagName("p"); 3. fo
C++閉包,一樣很簡單
exe pytho names 對象 reset bsp ini opera ruby 引用百度上對閉包的定義:閉包是指可以包含自由(未綁定到特定對象)變量的代碼塊;這些變量不是在這個代碼塊內或者任何全局上下文中定義的,而是在定義代碼塊的環境中定義(局部變量)。&ldquo
介面回撥,用最簡單的一個匿名內部類來講解(附介面回撥高階應用場景,讓你對介面的瞭解登堂入室)
介面回撥,是Java開發者必須要學的一個東西,可是他呢,書上沒有,大神部落格裡也沒有,所以導致了有部分小夥紙並不瞭解這個知識,所以這裡做一個最簡單的講解。 (先不牽扯什麼非同步回撥、同步回撥) 首先,只需要記住一點,介面回撥的含義就是把程式碼換個地方寫。 正常我們是這
swift3.0 如何優雅的自定義tableViewcell,最簡單的自定義cell,閉包事件傳遞,程式碼封裝。
一:最近在自學swift3.0,故而把OC中最簡單自定義cell的方法,照搬到swift試試。 下面說下設計思想。 1.設計原理,提供介面。下面貼上控制器的程式碼 func tableView(_ tableView: UITableView, cellForRow
精讀JavaScript模式(五),函數的回調、閉包與重寫模式
返回 早期 如果 str 表示 info 圖片 mem c函數 一、前言 今天地鐵上,看到很多拖著行李箱的路人,想回家了。 在上篇博客結尾,記錄到了函數的幾種創建方式,簡單說了下創建差異,以及不同瀏覽器對於name屬性的支持,這篇博客將從第四章函數的回調模式說起。我想了
jq外掛的機制,$.extend()和$.fn.extend()的區別及閉包的相關簡單案例
<body> <p>1111</p> <ul> <li style="margin: 10px 0">蘋果</li> <li sty
go語言筆記——append是內置的函數!!!new是一個函數!!!調試可以使用閉包,本質上是print調試,尼瑪!
... -c map blob 名稱 ebo bsp 處理機制 它的 內置函數 Go 語言擁有一些不需要進行導入操作就可以使用的內置函數。它們有時可以針對不同的類型進行操作,例如:len、cap 和 append,或必須用於系統級的操作,例如:panic。因此,它們需要直接