defaults-evaluation-order.js (630B)
1 function f1(a, bIs, cIs, dIs, b=a, c=5, d=c) { 2 assertEq(a, 1); 3 assertEq(b, bIs); 4 assertEq(c, cIs); 5 assertEq(d, dIs); 6 } 7 f1(1, 1, 5, 5); 8 f1(1, 42, 5, 5, 42); 9 f1(1, 42, 43, 43, 42, 43); 10 f1(1, 42, 43, 44, 42, 43, 44); 11 function f2(a=[]) { return a; } 12 assertEq(f2() !== f2(), true); 13 function f3(a=function () {}) { return a; } 14 assertEq(f3() !== f3(), true); 15 function f4(a=Date) { return a; } 16 assertEq(f4(), Date); 17 Date = 0; 18 assertEq(f4(), 0); 19 function f5(x=FAIL()) {}; // don't throw 20 var n = 0; 21 function f6(a=n++) {} 22 assertEq(n, 0); 23 function f7([a, b], A=a, B=b) { 24 assertEq(A, a); 25 assertEq(B, b); 26 } 27 f7([0, 1]);