From: Evan You Date: Sun, 9 Feb 2025 04:25:11 +0000 (+0800) Subject: perf: optimize toDisplayString X-Git-Tag: v3.6.0-alpha.1~16^2~76 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1ef15c780fbe177096ab3b290aafe976a5da364d;p=thirdparty%2Fvuejs%2Fcore.git perf: optimize toDisplayString --- diff --git a/packages/shared/src/toDisplayString.ts b/packages/shared/src/toDisplayString.ts index b23cf766a5..d279966792 100644 --- a/packages/shared/src/toDisplayString.ts +++ b/packages/shared/src/toDisplayString.ts @@ -7,7 +7,6 @@ import { isObject, isPlainObject, isSet, - isString, isSymbol, objectToString, } from './general' @@ -22,17 +21,24 @@ const isRef = (val: any): val is { value: unknown } => { * @private */ export const toDisplayString = (val: unknown): string => { - return isString(val) - ? val - : val == null - ? '' - : isArray(val) || - (isObject(val) && - (val.toString === objectToString || !isFunction(val.toString))) - ? isRef(val) - ? toDisplayString(val.value) - : JSON.stringify(val, replacer, 2) - : String(val) + switch (typeof val) { + case 'string': + return val + case 'object': + if (val) { + if (isRef(val)) { + return toDisplayString(val.value) + } else if ( + isArray(val) || + val.toString === objectToString || + !isFunction(val.toString) + ) { + return JSON.stringify(val, replacer, 2) + } + } + default: + return val == null ? '' : String(val) + } } const replacer = (_key: string, val: unknown): any => {