/
_expected.js
56 lines (48 loc) · 1.02 KB
/
_expected.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
console.log(function() {
if (x) return "HELLO"; // TDZ
const x = 1; // keep
return "WORLD"; // not reached
}());
const C = 1 + C + 2; // TDZ
let L = L; // TDZ
console.log("X+" ); // optimize
console.log(Y ? "Y+" : "Y-"); // TDZ
const Y = 2; // keep
console.log(Z ? "Z+" : "Z-"); // TDZ
const Z = 3; // keep
console.log("Z+" ); // keep
console.log(obj.x.y ? 1 : 2); // TDZ
const obj = { // keep
x: {
y: true
}
};
console.log(3 ); // keep
L2; // TDZ for L2
L3 = 20; // TDZ for L3
let L2, L3; // keep L2, L3
L3 = 30; // keep
cls; // TDZ
class cls {}
// Note that typical var/const/let use is still optimized
(function() {
console.log(A ? "A" : "!A");
var A = 1;
console.log("A" );
console.log("B");
console.log("B" );
console.log("C" );
console.log("D" );
})();
(function let_tdz() {
let flag = false;
function foo() {
if (flag) {
value; // TDZ
}
let value;
}
foo();
flag = true;
foo();
})();