@@ -22,12 +22,16 @@ export const emptyNode = new VNode('', {}, [])
22
22
23
23
const hooks = [ 'create' , 'activate' , 'update' , 'remove' , 'destroy' ]
24
24
25
- function isUndef ( s ) {
26
- return s == null
25
+ function isUndef ( v ) {
26
+ return v === undefined || v = == null
27
27
}
28
28
29
- function isDef ( s ) {
30
- return s != null
29
+ function isDef ( v ) {
30
+ return v !== undefined && v !== null
31
+ }
32
+
33
+ function isTrue ( v ) {
34
+ return v === true
31
35
}
32
36
33
37
function sameVnode ( vnode1 , vnode2 ) {
@@ -58,7 +62,9 @@ export function createPatchFunction (backend) {
58
62
for ( i = 0 ; i < hooks . length ; ++ i ) {
59
63
cbs [ hooks [ i ] ] = [ ]
60
64
for ( j = 0 ; j < modules . length ; ++ j ) {
61
- if ( modules [ j ] [ hooks [ i ] ] !== undefined ) cbs [ hooks [ i ] ] . push ( modules [ j ] [ hooks [ i ] ] )
65
+ if ( isDef ( modules [ j ] [ hooks [ i ] ] ) ) {
66
+ cbs [ hooks [ i ] ] . push ( modules [ j ] [ hooks [ i ] ] )
67
+ }
62
68
}
63
69
}
64
70
@@ -79,7 +85,7 @@ export function createPatchFunction (backend) {
79
85
function removeNode ( el ) {
80
86
const parent = nodeOps . parentNode ( el )
81
87
// element may have already been removed due to v-html / v-text
82
- if ( parent ) {
88
+ if ( isDef ( parent ) ) {
83
89
nodeOps . removeChild ( parent , el )
84
90
}
85
91
}
@@ -123,7 +129,7 @@ export function createPatchFunction (backend) {
123
129
// in Weex, the default insertion order is parent-first.
124
130
// List items can be optimized to use children-first insertion
125
131
// with append="tree".
126
- const appendAsTree = data && data . appendAsTree
132
+ const appendAsTree = isDef ( data ) && isTrue ( data . appendAsTree )
127
133
if ( ! appendAsTree ) {
128
134
if ( isDef ( data ) ) {
129
135
invokeCreateHooks ( vnode , insertedVnodeQueue )
@@ -148,7 +154,7 @@ export function createPatchFunction (backend) {
148
154
if ( process . env . NODE_ENV !== 'production' && data && data . pre ) {
149
155
inPre --
150
156
}
151
- } else if ( vnode . isComment ) {
157
+ } else if ( isTrue ( vnode . isComment ) ) {
152
158
vnode . elm = nodeOps . createComment ( vnode . text )
153
159
insert ( parentElm , vnode . elm , refElm )
154
160
} else {
@@ -170,7 +176,7 @@ export function createPatchFunction (backend) {
170
176
// in that case we can just return the element and be done.
171
177
if ( isDef ( vnode . componentInstance ) ) {
172
178
initComponent ( vnode , insertedVnodeQueue )
173
- if ( isReactivated ) {
179
+ if ( isTrue ( isReactivated ) ) {
174
180
reactivateComponent ( vnode , insertedVnodeQueue , parentElm , refElm )
175
181
}
176
182
return true
@@ -179,7 +185,7 @@ export function createPatchFunction (backend) {
179
185
}
180
186
181
187
function initComponent ( vnode , insertedVnodeQueue ) {
182
- if ( vnode . data . pendingInsert ) {
188
+ if ( isDef ( vnode . data . pendingInsert ) ) {
183
189
insertedVnodeQueue . push . apply ( insertedVnodeQueue , vnode . data . pendingInsert )
184
190
}
185
191
vnode . elm = vnode . componentInstance . $el
@@ -218,8 +224,8 @@ export function createPatchFunction (backend) {
218
224
}
219
225
220
226
function insert ( parent , elm , ref ) {
221
- if ( parent ) {
222
- if ( ref ) {
227
+ if ( isDef ( parent ) ) {
228
+ if ( isDef ( ref ) ) {
223
229
nodeOps . insertBefore ( parent , elm , ref )
224
230
} else {
225
231
nodeOps . appendChild ( parent , elm )
@@ -250,8 +256,8 @@ export function createPatchFunction (backend) {
250
256
}
251
257
i = vnode . data . hook // Reuse variable
252
258
if ( isDef ( i ) ) {
253
- if ( i . create ) i . create ( emptyNode , vnode )
254
- if ( i . insert ) insertedVnodeQueue . push ( vnode )
259
+ if ( isDef ( i . create ) ) i . create ( emptyNode , vnode )
260
+ if ( isDef ( i . insert ) ) insertedVnodeQueue . push ( vnode )
255
261
}
256
262
}
257
263
@@ -310,15 +316,15 @@ export function createPatchFunction (backend) {
310
316
}
311
317
312
318
function removeAndInvokeRemoveHook ( vnode , rm ) {
313
- if ( rm || isDef ( vnode . data ) ) {
319
+ if ( isDef ( rm ) || isDef ( vnode . data ) ) {
314
320
const listeners = cbs . remove . length + 1
315
- if ( ! rm ) {
316
- // directly removing
317
- rm = createRmCb ( vnode . elm , listeners )
318
- } else {
321
+ if ( isDef ( rm ) ) {
319
322
// we have a recursively passed down rm callback
320
323
// increase the listeners count
321
324
rm . listeners += listeners
325
+ } else {
326
+ // directly removing
327
+ rm = createRmCb ( vnode . elm , listeners )
322
328
}
323
329
// recursively invoke hooks on child component root node
324
330
if ( isDef ( i = vnode . componentInstance ) && isDef ( i = i . _vnode ) && isDef ( i . data ) ) {
@@ -420,24 +426,23 @@ export function createPatchFunction (backend) {
420
426
// note we only do this if the vnode is cloned -
421
427
// if the new node is not cloned it means the render functions have been
422
428
// reset by the hot-reload-api and we need to do a proper re-render.
423
- if ( vnode . isStatic &&
424
- oldVnode . isStatic &&
429
+ if ( isTrue ( vnode . isStatic ) &&
430
+ isTrue ( oldVnode . isStatic ) &&
425
431
vnode . key === oldVnode . key &&
426
- ( vnode . isCloned || vnode . isOnce ) ) {
432
+ ( isTrue ( vnode . isCloned ) || isTrue ( vnode . isOnce ) ) ) {
427
433
vnode . elm = oldVnode . elm
428
434
vnode . componentInstance = oldVnode . componentInstance
429
435
return
430
436
}
431
437
let i
432
438
const data = vnode . data
433
- const hasData = isDef ( data )
434
- if ( hasData && isDef ( i = data . hook ) && isDef ( i = i . prepatch ) ) {
439
+ if ( isDef ( data ) && isDef ( i = data . hook ) && isDef ( i = i . prepatch ) ) {
435
440
i ( oldVnode , vnode )
436
441
}
437
442
const elm = vnode . elm = oldVnode . elm
438
443
const oldCh = oldVnode . children
439
444
const ch = vnode . children
440
- if ( hasData && isPatchable ( vnode ) ) {
445
+ if ( isDef ( data ) && isPatchable ( vnode ) ) {
441
446
for ( i = 0 ; i < cbs . update . length ; ++ i ) cbs . update [ i ] ( oldVnode , vnode )
442
447
if ( isDef ( i = data . hook ) && isDef ( i = i . update ) ) i ( oldVnode , vnode )
443
448
}
@@ -455,15 +460,15 @@ export function createPatchFunction (backend) {
455
460
} else if ( oldVnode . text !== vnode . text ) {
456
461
nodeOps . setTextContent ( elm , vnode . text )
457
462
}
458
- if ( hasData ) {
463
+ if ( isDef ( data ) ) {
459
464
if ( isDef ( i = data . hook ) && isDef ( i = i . postpatch ) ) i ( oldVnode , vnode )
460
465
}
461
466
}
462
467
463
468
function invokeInsertHook ( vnode , queue , initial ) {
464
469
// delay insert hooks for component root nodes, invoke them after the
465
470
// element is really inserted
466
- if ( initial && vnode . parent ) {
471
+ if ( isTrue ( initial ) && isDef ( vnode . parent ) ) {
467
472
vnode . parent . data . pendingInsert = queue
468
473
} else {
469
474
for ( let i = 0 ; i < queue . length ; ++ i ) {
@@ -538,7 +543,7 @@ export function createPatchFunction (backend) {
538
543
}
539
544
540
545
function assertNodeMatch ( node , vnode ) {
541
- if ( vnode . tag ) {
546
+ if ( isDef ( vnode . tag ) ) {
542
547
return (
543
548
vnode . tag . indexOf ( 'vue-component' ) === 0 ||
544
549
vnode . tag . toLowerCase ( ) === ( node . tagName && node . tagName . toLowerCase ( ) )
@@ -549,15 +554,15 @@ export function createPatchFunction (backend) {
549
554
}
550
555
551
556
return function patch ( oldVnode , vnode , hydrating , removeOnly , parentElm , refElm ) {
552
- if ( ! vnode ) {
553
- if ( oldVnode ) invokeDestroyHook ( oldVnode )
557
+ if ( isUndef ( vnode ) ) {
558
+ if ( isDef ( oldVnode ) ) invokeDestroyHook ( oldVnode )
554
559
return
555
560
}
556
561
557
562
let isInitialPatch = false
558
563
const insertedVnodeQueue = [ ]
559
564
560
- if ( ! oldVnode ) {
565
+ if ( isUndef ( oldVnode ) ) {
561
566
// empty mount (likely as component), create new root element
562
567
isInitialPatch = true
563
568
createElm ( vnode , insertedVnodeQueue , parentElm , refElm )
@@ -575,7 +580,7 @@ export function createPatchFunction (backend) {
575
580
oldVnode . removeAttribute ( 'server-rendered' )
576
581
hydrating = true
577
582
}
578
- if ( hydrating ) {
583
+ if ( isTrue ( hydrating ) ) {
579
584
if ( hydrate ( oldVnode , vnode , insertedVnodeQueue ) ) {
580
585
invokeInsertHook ( vnode , insertedVnodeQueue , true )
581
586
return oldVnode
@@ -606,7 +611,7 @@ export function createPatchFunction (backend) {
606
611
nodeOps . nextSibling ( oldElm )
607
612
)
608
613
609
- if ( vnode . parent ) {
614
+ if ( isDef ( vnode . parent ) ) {
610
615
// component root element replaced.
611
616
// update parent placeholder node element, recursively
612
617
let ancestor = vnode . parent
@@ -621,7 +626,7 @@ export function createPatchFunction (backend) {
621
626
}
622
627
}
623
628
624
- if ( parentElm !== null ) {
629
+ if ( isDef ( parentElm ) ) {
625
630
removeVnodes ( parentElm , [ oldVnode ] , 0 , 0 )
626
631
} else if ( isDef ( oldVnode . tag ) ) {
627
632
invokeDestroyHook ( oldVnode )
0 commit comments