@@ -40,12 +40,30 @@ module.exports = function (ast, vars) {
40
40
}
41
41
else if ( node . type === 'BinaryExpression' ||
42
42
node . type === 'LogicalExpression' ) {
43
+ var op = node . operator ;
44
+
45
+ if ( op === '&&' ) {
46
+ var l = walk ( node . left ) ;
47
+ if ( l === FAIL ) return FAIL ;
48
+ if ( ! l ) return l ;
49
+ var r = walk ( node . right ) ;
50
+ if ( r === FAIL ) return FAIL ;
51
+ return r ;
52
+ }
53
+ else if ( op === '||' ) {
54
+ var l = walk ( node . left ) ;
55
+ if ( l === FAIL ) return FAIL ;
56
+ if ( l ) return l ;
57
+ var r = walk ( node . right ) ;
58
+ if ( r === FAIL ) return FAIL ;
59
+ return r ;
60
+ }
61
+
43
62
var l = walk ( node . left ) ;
44
63
if ( l === FAIL ) return FAIL ;
45
64
var r = walk ( node . right ) ;
46
65
if ( r === FAIL ) return FAIL ;
47
66
48
- var op = node . operator ;
49
67
if ( op === '==' ) return l == r ;
50
68
if ( op === '===' ) return l === r ;
51
69
if ( op === '!=' ) return l != r ;
@@ -62,8 +80,6 @@ module.exports = function (ast, vars) {
62
80
if ( op === '|' ) return l | r ;
63
81
if ( op === '&' ) return l & r ;
64
82
if ( op === '^' ) return l ^ r ;
65
- if ( op === '&&' ) return l && r ;
66
- if ( op === '||' ) return l || r ;
67
83
68
84
return FAIL ;
69
85
}
0 commit comments