diff --git a/packages/runtime-core/src/helpers/renderList.ts b/packages/runtime-core/src/helpers/renderList.ts index 1655d555fb3..a5453a4029c 100644 --- a/packages/runtime-core/src/helpers/renderList.ts +++ b/packages/runtime-core/src/helpers/renderList.ts @@ -56,19 +56,18 @@ export function renderList( cache?: any[], index?: number ): VNodeChild[] { - let ret: VNodeChild[] + let ret: VNodeChild[] = [] const cached = (cache && cache[index!]) as VNode[] | undefined if (isArray(source) || isString(source)) { - ret = new Array(source.length) - for (let i = 0, l = source.length; i < l; i++) { + const len = source.length + for (let i = 0; i < len; i++) { ret[i] = renderItem(source[i], i, undefined, cached && cached[i]) } } else if (typeof source === 'number') { if (__DEV__ && !Number.isInteger(source)) { warn(`The v-for range expect an integer value but got ${source}.`) } - ret = new Array(source) for (let i = 0; i < source; i++) { ret[i] = renderItem(i + 1, i, undefined, cached && cached[i]) } @@ -79,18 +78,16 @@ export function renderList( ) } else { const keys = Object.keys(source) - ret = new Array(keys.length) for (let i = 0, l = keys.length; i < l; i++) { const key = keys[i] ret[i] = renderItem(source[key], key, i, cached && cached[i]) } } - } else { - ret = [] } if (cache) { cache[index!] = ret } + return ret }