2

I want to know what will alert this javascript expression

alert( 20e-1['toString'](2) );

and I need detailed explanations about the answer.

Thank You for detailed answer!

Jordan Running
  • 102,619
  • 17
  • 182
  • 182
  • 1
    Why don't you try it? – Jordan Running Nov 21 '15 at 19:37
  • 1
    try here http://jsfiddle.net/ – Md Ashaduzzaman Nov 21 '15 at 19:43
  • 20e-1 = 2 (mathematical operation). It is of a type "number" which is also an Object in javascript. Thus, we can write 2.someMethod(); Here, you call the toString() method, with brackets notation (and not dot notation) : 20e-1['toString'], which returns a litteral expression. Finally, you call the method with parenthesis, and add a parameter 2 to the method, which is the basis of the result, here a binary result. So... We have a 2 converted into a binary number => 10 which is expressed as a string '10'. – Arpp Nov 21 '15 at 19:49

1 Answers1

7

The result will be 10.

Let's dissect the expression 20e-1['toString'](2):

  • 20e-1 is a floating point number specified in scientific notation, which is a shorthand for 20 * 10^-1 ( = 20 * 0.1 = 2).

  • toString is a property of a primitive value, the floating point number 2. toString is a function that converts the number to its string representation. The syntax suggests that the primitive value is promoted into a Number object whose property toString is then referenced ( the reality is more complex,and this SO answer will explain it in much better informed way than I could repeat).

  • (2) is the list of actual parameters to the method toString. The single parameter specifies a conversion of the number to the string representation in base 2. 2 in base 2 representtaion happens to be 10 which explains the output.

Community
  • 1
  • 1
collapsar
  • 17,010
  • 4
  • 35
  • 61