Does the object in Js return NaN? when it is converted to a numeric type?

wrong function, sorry.

1. When I read the third chapter of Js elevation, I don"t understand when the Number () function converts the object to a numerical value.
2. Then I try to convert an object to a numeric value with the Number () function, and the result is NaN.
3, so if there is an object that can be converted to a numeric type, please give an example, thank you very much.

Mar.09,2021

you need to know exactly how it is executed when Number is called.
according to the js specification, if the parameter is object , the object will be first converted to primitive type data, so how to convert it to primitive type data?
such as

let a = {}

then the valueOf method of a is called first. If the result is not of the original type, then the toString method is called:
a.valueOf () returns the object itself, not the original type, so you need to continue to call the toString method.
a.toString () returns "[object Object]" , which is a string and original type, so next call Number ("[object Object]") to return NaN ;

so if you want to return a number, we can change the result by changing the return value in the conversion step, for example, we can change the return value of valueOf :

let a = {}
a.valueOf = function () {return 2}
Number(a) // 2

or modify the return value of toString :

let b = {}
b.toString = function () {return 3}
Number(b) // 3

reference link

  1. specification

it is said that ES5.1,
Number will perform toNumber operations on the parameters. The returned value of toNumber is as follows

 

let flag = false;
Number (flag)
/ / 0

let b = new Boolean (false);
b / / Boolean {false}
Number (b)
/ / 0

can be converted, will be automatically packaged and unpacked (packing type) default false-> 0, true-> 1

I wonder if that's what you're asking? If not, you can cut down what is said in the book, where you don't understand

Menu