+ 2
I find this a bit confusing. HELP!
var x = 0; var arr = [4, 9, 2]; arr [x] = (++x) - 1; document.write(arr[x]); // This outputs 9. why?
4 Answers
+ 12
(++x) -1=0
and ++x done pre increment first then use so x become 1
so arr[1] is second element of array which is 9
arr[x] =arr[1]=which is 9
+ 3
I will bare what it is below:
var x = 0; // x is 0, initial value
var arr = [4,9,2]; // array with initial values of 4,9,2
arr[x] = (++x) - 1; // arr[0] = (0+1) - 1;
// At this point, arr[0] is 0, x is 1 because of the increment
When you want to print the value of arr[x] here, it is no longer arr[0], but arr[1].
This is because the x value is already 1 and not 0.
Thus, arr[1] = 9.
If you print arr, you will get [0,9,2] and not [4,9,2].
Hope this helps :)
+ 3
arr [x] = (++x) - 1;
In JavaScript, left side is evaluated first. Since x is 0 before this statement, arr[0] is set aside as a memory location to be stored,
then it goes on to calculate the right side expression.
x is incremented to 1 and RHS = 0, since we pre-calculated the location to store this value, 0 is assigned to arr[0], but now x has become 1
so you are printing arr[1], which is 9.
+ 1
Question is tricky and it tests our knowledge of incremental operators in terms of their assignment and not in terms of their evaluation.
var x = 0; var arr = [4, 9, 2];
arr [x] = (++x) - 1; // whether ++x or x++ it only equates arr[0] to 0(incase of ++x) or -1 (incase of x++)
// x value is now 1 even if the equation was :- arr[x] = (x++) - 1;
document.write(arr[x]); // arr[1] is displayed . That is 9....
Whether post increment or pre increment, the value of x after the evaluation and assignment is incrimented. ( 1 in this example)