]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
perf: optimize toDisplayString
authorEvan You <evan@vuejs.org>
Sun, 9 Feb 2025 04:25:11 +0000 (12:25 +0800)
committerEvan You <evan@vuejs.org>
Sun, 9 Feb 2025 05:23:38 +0000 (13:23 +0800)
packages/shared/src/toDisplayString.ts

index b23cf766a5c802e88c2324578b411e9e05074c0c..d2799667927c5b0cbf8643d0289370b3e354bd25 100644 (file)
@@ -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 => {