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



我正在努力理解这种JavaScript行为(javascript n00b alert!!(。问题的来源是我的代码中的拼写错误,导致不希望的情况。我想知道的是某个数字的长度。例如,如果为 100,则答案应为 3,如果为 5893,则答案应为 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);

看起来这是 Javascript 自动将原始值装箱到其 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(并获取其返回值(。这是执行到字符串的实际转换。

使用Javascript一切顺利

最新更新