2017-02-24 171 views
-1

如果我使用的提取API如下:爲什麼console.log在這種情況下不需要參數?

fetch(url) 
    .then(response => response.json()) 
    .then(console.log) 

我明白,這將記錄以前的「然後」(響應數據)的結果,但爲什麼不執行console.log需要在本任何參數案件?

是否有任何技術推理或背後的文檔,並可以使用任何其他內置方法在這種性質?

+0

由於'then'需要一個回調函數這就是從最後一個回來,然後,將參數傳遞給說法的console.log。基本上'.then(function(json){console.log(json)})'或'.then(json => console.log(json))' – Li357

+0

'.then(thing => console.log (thing))',除非你不創建一個匿名函數並且所有的參數都會被傳遞給你。任何可調用都可以這樣使用。 – jonrsharpe

回答

2

那簡單的JavaScript,在這種情況下,console.log需要這樣的說法,這裏所發生的是,then功能採用了回調的第一個參數,並在內部執行的是與最後一個then函數返回的參數回調。所以這意味着你正在傳遞console.log函數的引用(或者一個副本,我不太確定),而不是直接執行它。

綜上所述,本:

function a (callback) { 
    var something = 12345; 
    callback(something); 
} 

a(console.log); 

相同

a(function(something) { 
    console.log(something); 
}) 
相關問題