如何访问常量嵌套函数&x27;javascript中的s参数?

如何访问常量嵌套函数&x27;javascript中的s参数?,javascript,algorithm,Javascript,Algorithm,我在一次评估中被问到这个问题,但我无法理解。我想知道可能的解决办法 问题: 在指定的行上写一条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

我在一次评估中被问到这个问题,但我无法理解。我想知道可能的解决办法

问题: 在指定的行上写一条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
分配不同的值。但我认为罪魁祸首是知道嵌套函数中的变量
c
。请注意,
c
始终是一个介于0和10之间的数字(正如
Math.random()
在0和1之间,然后乘以10)。

您已经正确地得出结论,传递给
fn
的参数是一个介于0和10之间的随机数,在调用
fn
将计算的表达式中,它是
c
x+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
a
通过
x
调用,在调用时仍然是2。所以
Math.abs(b)
是2,所以我们可以推导出
y
必须是4

使
y
成为一行中的4的一种明显方法:

y = 4;

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

如果您想提供创造性的答案,请尝试:

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

你的角色是什么?问题是什么?你到底想在这里做什么?问题是什么?“如何访问”不是一个明确的问题。任务是什么?你有没有想过重新分配
Math.random
..)抱歉,该问题没有生成代码块,因为它是一条注释语句。我刚刚添加了:在指定的行上写一条Javascript语句,使打印的数字始终在10到20之间。