let res = fn(1, 2)(3); console.log(res); //=>6 1+2+3怎么实现
时间: 2024-03-13 14:43:27 浏览: 12
可以通过函数柯里化(Currying)实现。函数柯里化是一种将接受多个参数的函数转换成接受单一参数(最初函数的第一个参数)的函数,并返回接受余下参数且返回结果的新函数的技术。
以下是一个实现该功能的例子:
```
function fn(a) {
return function(b) {
return function(c) {
return a + b + c;
}
}
}
let res = fn(1)(2)(3);
console.log(res); //=>6
```
在这个例子中,fn 函数接受一个参数 a,返回一个函数,这个返回的函数接受一个参数 b,返回一个函数,这个返回的函数接受一个参数 c,最终返回 a+b+c 的值。这样,我们就可以通过连续调用函数的方式,实现1+2+3的求和。
相关问题
let res = fn(1, 2)(3); console.log(res)//6 编写一个函数让fn里面的1,2和3相加等于6 就是最后log的res的值是6
可以这样实现:
```
function fn(a, b) {
return function(c) {
return a + b + c;
}
}
let res = fn(1, 2)(3);
console.log(res); // 6
```
这里的 `fn` 函数返回一个内部函数,在内部函数中对参数进行求和,最终返回求和结果。当调用 `fn(1, 2)(3)` 时,会先执行 `fn(1, 2)`,返回内部函数,然后再执行内部函数,将参数 3 传入,最终求和结果为 6。
let aa = []:let ba ="o". console.log(aa == 0): console.log(aa == !aa); console.log(ba == 0); console.log(aa == ba); console.log(null == 0): console.log(null <= 0): console.log(null < 0); 输出返回的结果是?
这段代码存在语法错误,应该是下面这样:
```javascript
let aa = [];
let ba = "0";
console.log(aa == 0); // 输出 true
console.log(aa == !aa); // 输出 true,因为 !aa 的结果是 true,而 [] 转换为布尔值为 true,所以两边都是 true,使用了双等号进行比较,类型转换后结果为 true
console.log(ba == 0); // 输出 false,因为 "0" 转换为数字后是 0,而使用双等号进行比较时会进行类型转换,所以结果为 false
console.log(aa == ba); // 输出 false,因为一个是数组,一个是字符串,类型不同,使用双等号进行比较时会进行类型转换,所以结果为 false
console.log(null == 0); // 输出 false,因为 null 只与 undefined 相等,不与其他任何值相等,使用双等号进行比较时不会进行类型转换,所以结果为 false
console.log(null <= 0); // 输出 true,因为 null 转换为数字时为 0,使用小于等于号进行比较时会进行类型转换,所以结果为 true
console.log(null < 0); // 输出 false,因为 null 转换为数字时为 0,使用小于号进行比较时会进行类型转换,所以结果为 false
```
在这里,我们定义了一个空数组 `aa` 和一个字符串 `"0"`,然后对它们进行了各种类型之间的比较。需要注意的是,JavaScript 中的类型转换是非常复杂的,很多情况下都需要进行手动转换才能得到正确的结果。