簡體   English   中英

如何訪問 javascript 中的常量嵌套函數的參數?

[英]How to access a constant nested function's parameter in javascript?

我在進行的評估中被問到這個問題,但無法弄清楚。 想知道可能的解決方案。

問題:

在指示的行上寫一條 Javascript 語句,使打印的數字始終在 10 到 20 之間。

 let x = 2; let y = 8; const a = function(b) { return function(c) { return x + y + Math.abs(b) + c; }; }; // Statement will go here const fn = a(x); x = 4; console.log(fn(Math.random() * 10));

我嘗試為變量y分配不同的值。 但我認為罪魁禍首是要知道嵌套的 function 中的變量c是什么。 請注意, c始終是介於 0 和 10 之間的數字(因為Math.random()介於 0 和 1 之間,然后乘以 10)。

您已經正確得出結論,傳遞給fn的參數是 0 到 10 之間的隨機數,即調用fn將計算的表達式中的cx + y + Math.abs(b) + c

因此,如果fn必須返回 10 到 20 之間的數字,則x + y + Math.abs(b)必須等於 10。

我們還看到全局變量x一次設置為 4,我們無法再更改它,但仍然在調用fn之前,因此這意味着y + Math.abs(b)必須等於 6。

現在這已經給了我們一個提示:就目前而言, y是 8,這使得上一段中的結論是不可能的。 所以我們必須改變y 現在還為時不晚,因為只有在調用fn時才會讀取y的值。

那么什么是Math.abs(b) 調用a時設置局部變量b ax調用,在調用時它仍然是 2。所以Math.abs(b)是 2,所以我們可以推導出y必須是 4。

一種使y在一行中變為 4 的明顯方法:

y = 4;

(或者, y-=4y>>=1y/=2y^=12 ,...等)

如果您想提供有創意的答案,請嘗試:

Math.random = function() { return 1.345; };

暫無
暫無

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

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