簡體   English   中英

了解匿名函數的作用域和返回值

[英]understanding the anonymous function scope and return value

我有一個接收兩個整數的函數,我希望另一個變量用較大的變量初始化。

這是代碼部分:

 function findCommonDev(num1, num2) { var res = ((num1, num2) => { if (num1 > num2) { return num1; } else { return num2; } }); console.log(res); } findCommonDev(10,12) 

現在,由此產生的問題與特定代碼無關。

  1. console.log(res)打印'[function:res]'我希望res具有傳遞給函數的較大int的值。

  2. 我正在用VSC編寫,並且未將參數標記為正在使用,這意味着存在num1和num2的陰影-為什么?

  3. 我該如何優雅地解決這個問題?

您需要調用該函數並將num1num2作為參數傳遞。

 function findCommonDev(num1, num2) { var res = ((num1, num2) => { if (num1 > num2) { return num1; } else { return num2; } })(num1,num2); console.log(res); } findCommonDev(4,6) 

還要注意,如果不傳遞num1num2該代碼將無法工作,因為在函數num1num2是局部變量,而不是外部函數的變量。

函數的預期參數就像局部變量一樣。 無論是否傳遞參數都將創建它們。

除了返回新函數(這是提供所需值的實際函數)之外,您還可以取最大值。

 function findCommonDev(num1, num2) { var res = Math.max(num1, num2); console.log(res); } findCommonDev(3, 42); 

您要給控制台提供功能參考。 但是,要運行函數,然后指定參數:

 function findCommonDev(num1, num2) { var res = ((num1, num2) => { if (num1 > num2) { return num1; } else { return num2; } }); return res(num1, num2); }; console.log(findCommonDev(1,2)); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM