You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求解释Codewars中无字母数字返回5的函数解决方案

拆解Codewars这道“返回5”的JS奇技淫巧方案

让我来一步步拆解这两个有趣的解决方案,它们都是利用了JavaScript的隐式类型转换和运算符特性,在字符限制下凑出数字5的:

第一个方案:_=_=>-~-~-~-~-~[]

咱们从里到外拆:

  • 首先,[]在JavaScript中被隐式转换为数字时会变成0(你可以在浏览器控制台敲+[]试试,结果就是0)。
  • 然后看~这个按位取反运算符:它的运算规则是 ~x = -(x + 1)。所以~0的结果就是-1。
  • 接着-~x就等于 -(-(x+1)) = x+1,相当于给x加1。比如-~0是1,-~1是2,以此类推。
  • 这里连续叠了5次-~,从初始的0(来自[])开始,每次加1,五次之后正好得到5。整个表达式最终结果就是5,所以这个箭头函数返回的就是目标值。

第二个方案:_=()=>+!""+!""+!""+!""+!""

这个是利用布尔值转数字的特性:

  • 先看!"":空字符串""在布尔判断里是false,!是逻辑非运算符,所以!""会把false反转成true。
  • +!""里的+是一元正号运算符,它会把布尔值隐式转成数字:true对应1,false对应0。所以+!""的结果就是1。
  • 这里把五个+!""用加法运算符连起来,本质就是1 + 1 + 1 + 1 + 1,结果自然是5。这个函数就是返回这个相加的结果。

这类题目核心就是玩JS的类型隐式转换和运算符特性,因为限制了可用字符,所以只能用这种“歪门邪道”来构造目标数字~

内容的提问来源于stack exchange,提问作者user8586459

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:04:26