Javascript 当值既不是数字也不是字符串类型时,Number()是否显式调用toString()?(例如功能)
由于文档描述了parseInt()的这种行为,而不是作为函数调用的Number()构造函数,因此我想了解一下这是否可靠,以及是否有来自官方来源的引用。示例代码:Javascript 当值既不是数字也不是字符串类型时,Number()是否显式调用toString()?(例如功能),javascript,function,Javascript,Function,由于文档描述了parseInt()的这种行为,而不是作为函数调用的Number()构造函数,因此我想了解一下这是否可靠,以及是否有来自官方来源的引用。示例代码: let加法器=(函数(){ 设和=0 返回函数add(num){ 总和+=num add.toString=()=>sum//方法被覆盖以返回值 返回添加 } })() console.log(数字(加法器(5)(2)(3))/=>10参见。调用Number将调用带有参数的ToNumeric(value),该参数将调用 使用参数,该参
let加法器=(函数(){
设和=0
返回函数add(num){
总和+=num
add.toString=()=>sum//方法被覆盖以返回值
返回添加
}
})()
console.log(数字(加法器(5)(2)(3))/=>10
参见。调用Number
将调用带有参数的ToNumeric(value)
,该参数将调用
使用参数,该参数将(通常)调用
带参数和提示的数字
,它执行以下操作:
valueOf
方法(如果存在)。如果这样的方法不存在,它将尝试调用对象上的toString
方法
是的,在valueOf
不存在的情况下调用toString
是可靠的
演示如何首先调用valueOf
的实时片段(如果存在):
let加法器=(函数(){
设和=0
返回函数add(num){
总和+=num
add.toString=()=>{
log('toString called');
return sum;//方法被覆盖为返回值
};
add.valueOf=()=>{
log('valueOf called');
return sum;//方法被覆盖为返回值
};
返回添加
}
})()
console.log(数字(加法器(5)(2)(3))/=>10