JavaScript:toString和toString()之间的区别

时间:2020-01-19 00:22:28

标签: javascript typescript

我正在努力理解此JavaScript行为(javascript n00b警报!!!)。问题的根源是我的代码中的错字,导致了不希望的情况。我想知道的是一定数量的长度。例如,如果其值为100,则答案应为3,如果其5893为1,则答案应为4,依此类推。为此,我所做的只是将数字转换为字符串,然后在字符串上调用.length

private getNumberLength(num: number) {
    return num.toString().length;
}

在上面的return语句中,我有错字,使它看起来像

return num.toString.length;

结果是没有编译错误,并且getNumberLength始终返回1。我不明白这一点(为什么1?)。有人可以帮我理解吗?

下面您可以快速测试是否愿意

var num = 666;

console.log('Length on toString(): ' + num.toString().length);
console.log('Length on toString: ' + num.toString.length);

1 个答案:

答案 0 :(得分:2)

看起来像是Java行为,即自动将原始值装箱到其Object对应对象以调用其方法。

该功能看起来正确,但是可以回答您的问题(我不理解不赞成投票的人)。

toString是对该函数的引用。 toString.length起作用的原因是因为引用自Mozilla。

Function.length = length属性指示函数期望的参数数量。

因此,如果您将函数重新声明为

private getNumberLength(num: number, num2: number) {
    return num.toString().length;
}

getNumberLength.length将返回2。 toString.length将返回1,因为它只需要一个参数。

参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/length

toString()正在调用函数toString(并获取其返回值)。这是在实际转换为String。

使用Javascript一切顺利

相关问题