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

如何在箭头函数中复用计算值,实现单行完美平方数判断?

完美平方数判断的单行JavaScript实现

首先,你尝试的柯里化写法返回的是一个函数而非布尔值,因为嵌套箭头函数的逻辑是:外层函数接收n后返回一个新函数,这个新函数才会执行平方数判断。要实现既保存计算值到变量又能单行运行的效果,有以下几种靠谱的方式:

1. 带块级作用域的单行箭头函数

这种写法和原多线版本逻辑完全一致,只是压缩成了单行,同时保留了s变量的局部作用域:

const isSquare = (n) => { const s = Math.sqrt(n); return s === parseInt(s); }

调用方式和原函数一样:console.log(isSquare(4)) 会输出true。

2. 利用逗号运算符的表达式写法(不推荐,存在作用域泄漏风险)

如果不在意变量作用域,可以用逗号运算符在一个表达式里完成赋值和判断,但s会变成全局变量(若外层未声明):

const isSquare = (n) => (s = Math.sqrt(n), s === parseInt(s))

这种写法不推荐,因为可能污染全局作用域,还是第一种块级作用域的写法更安全规范。

3. 简洁版(无需保存变量)

如果你不需要复用计算出的平方根值,你补充的简洁写法已经足够高效:

const isSquare = (n) => Math.sqrt(n) % 1 === 0

它通过判断平方根是否为整数(取余1等于0)来实现,代码更短且无多余变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 07:10:28