/
main.js
61 lines (50 loc) · 905 Bytes
/
main.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
57
58
59
60
61
var results = [], log = x => results.push(x);
(function () {
var a = "PASS1";
for (var b = 2; --b >= 0; ) {
(function() {
var c = function() {
return 1;
}(c && (a = "FAIL1"));
})();
}
log(a);
})();
log(a ? "FAIL2" : "PASS2");
var a = 1;
var b = 2;
log(b ? "PASS3" : "FAIL3");
log(c ? "FAIL4" : "PASS4");
var c = 3;
log(c ? "PASS5" : "FAIL5");
log(function() {
if (x) return "FAIL6";
var x = 1;
return "PASS6";
}());
(function () {
var first = state();
var on = true;
var obj = {
state: state
};
log(first)
log(obj.state());
function state() {
return on ? "ON" : "OFF";
}
})();
(function () {
var flag = false;
function foo() {
if (flag) {
if (!value) log(flag + "1");
}
var value = true;
log(flag + "2");
}
foo();
flag = true;
foo();
})();
assert.strictEqual(results.join(" "), "PASS1 PASS2 PASS3 PASS4 PASS5 PASS6 OFF ON false2 true1 true2");