@@ -1042,7 +1042,7 @@ ASTCompiler.prototype = {
1042
1042
self . if_ ( self . stage === 'inputs' || 's' , function ( ) {
1043
1043
if ( create && create !== 1 ) {
1044
1044
self . if_ (
1045
- self . not ( self . nonComputedMember ( 's' , ast . name ) ) ,
1045
+ self . isNull ( self . nonComputedMember ( 's' , ast . name ) ) ,
1046
1046
self . lazyAssign ( self . nonComputedMember ( 's' , ast . name ) , '{}' ) ) ;
1047
1047
}
1048
1048
self . assign ( intoId , self . nonComputedMember ( 's' , ast . name ) ) ;
@@ -1079,7 +1079,7 @@ ASTCompiler.prototype = {
1079
1079
} else {
1080
1080
ensureSafeMemberName ( ast . property . name ) ;
1081
1081
if ( create && create !== 1 ) {
1082
- self . if_ ( self . not ( self . nonComputedMember ( left , ast . property . name ) ) , self . lazyAssign ( self . nonComputedMember ( left , ast . property . name ) , '{}' ) ) ;
1082
+ self . if_ ( self . isNull ( self . nonComputedMember ( left , ast . property . name ) ) , self . lazyAssign ( self . nonComputedMember ( left , ast . property . name ) , '{}' ) ) ;
1083
1083
}
1084
1084
expression = self . nonComputedMember ( left , ast . property . name ) ;
1085
1085
if ( self . state . expensiveChecks || isPossiblyDangerousMemberName ( ast . property . name ) ) {
@@ -1274,6 +1274,10 @@ ASTCompiler.prototype = {
1274
1274
return '!(' + expression + ')' ;
1275
1275
} ,
1276
1276
1277
+ isNull : function ( expression ) {
1278
+ return expression + '==null' ;
1279
+ } ,
1280
+
1277
1281
notNull : function ( expression ) {
1278
1282
return expression + '!=null' ;
1279
1283
} ,
@@ -1705,7 +1709,7 @@ ASTInterpreter.prototype = {
1705
1709
identifier : function ( name , expensiveChecks , context , create , expression ) {
1706
1710
return function ( scope , locals , assign , inputs ) {
1707
1711
var base = locals && ( name in locals ) ? locals : scope ;
1708
- if ( create && create !== 1 && base && ! ( base [ name ] ) ) {
1712
+ if ( create && create !== 1 && base && base [ name ] == null ) {
1709
1713
base [ name ] = { } ;
1710
1714
}
1711
1715
var value = base ? base [ name ] : undefined ;
@@ -1749,7 +1753,7 @@ ASTInterpreter.prototype = {
1749
1753
var lhs = left ( scope , locals , assign , inputs ) ;
1750
1754
if ( create && create !== 1 ) {
1751
1755
ensureSafeAssignContext ( lhs ) ;
1752
- if ( lhs && ! ( lhs [ right ] ) ) {
1756
+ if ( lhs && lhs [ right ] == null ) {
1753
1757
lhs [ right ] = { } ;
1754
1758
}
1755
1759
}
0 commit comments