首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么Number(('‘+ num)…)中需要引号??

为什么Number(('‘+ num)…)中需要引号??
EN

Stack Overflow用户
提问于 2018-05-03 02:52:00
回答 4查看 28关注 0票数 1

为什么数字后面需要引号?这将如何使用parseInt编写?

代码语言:javascript
复制
function squareDigits(num){
  return Number(('' + num).split('').map(function (val) {
    return val * val;
  }).join(''));
}
EN

回答 4

Stack Overflow用户

发布于 2018-05-03 02:56:45

看起来您需要一个字符串,以便以后拆分数字。

这可以通过添加一个空字符串或使用toString()方法来完成,该方法不仅适用于NumberString对象。

代码语言:javascript
复制
function squareDigits(num) {
    return Number(
        ('' + num)                // convert to string
            .split('')            // split works only with string
            .map(function(val) {
                return val * val;
            })
            .join(''));
}

console.log(squareDigits(27));

票数 0
EN

Stack Overflow用户

发布于 2018-05-03 02:59:19

如果没有括号,它将是

代码语言:javascript
复制
'' + num.split('')

这将尝试在字符串连接之前执行.split,因此它不会工作,因为它不存在于数字上。有了括号,它首先被连接成一个字符串,然后对它调用split。

票数 0
EN

Stack Overflow用户

发布于 2018-05-03 03:04:24

该函数的工作方式如下:

假设我们将234传递给squareDigits函数,它将该数字转换为字符串(通过''+num语句),然后将该字符串(使用.split(''))拆分为数组(['2', '3', '4'])中的单个数字,对于每个数字(它们实际上仍是字符串),我们将其与自身相乘(通过映射数组),乘法将起作用,因为我们使用了自动强制转换。最后,我们将连接数组以形成一个字符串(4916),然后将其转换为[4, 9, 16] (使用Number构造函数)。

使用parseInt的函数也不会有什么不同:

代码语言:javascript
复制
function squareDigits(num) {
    return parseInt(('' + num).split('').map(function(val) {
        return val * val;
    }).join(''));
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50141590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档