let a = true let b = 2 let c = null let d = undefined let e = NaN let f = {} let g = []
toString() 吗? 不行
// 1.toString() console.log(a.toString()); // 字符串 true console.log(b.toString()); // 字符串 2 // console.log(c.toString()); 这会报错 // console.log(d.toString()); 这会报错 console.log(e.toString()); // 字符串 NaN console.log(f.toString()); // [object Object] console.log(g.toString()); // 输出空白
String() 吗?不行
// 2.String() console.log(String(a)); // 字符串 true console.log(String(b)); // 字符串 2 console.log(String(c));// 字符串 null console.log(String(d));// 字符串 undefined console.log(String(e));// 字符串 NaN console.log(String(f));// [object Object] console.log(String(g));// 输出空白
拼接空字符串?不行
// 3.拼接空字符串 console.log(a + '');// 字符串 true console.log(b + '');// 字符串 2 console.log(c + '');// 字符串 null console.log(d + '');// 字符串 undefined console.log(e + '');// 字符串 NaN console.log(f + '');// [object Object] console.log(g + '');// 输出空白
JSON.stringify() 吗?不行
// 4.JSON.stringify() console.log(JSON.stringify(a));// 字符串 true console.log(JSON.stringify(b));// 字符串 2 console.log(JSON.stringify(c));// 字符串 null console.log(JSON.stringify(d));// undefined 这个不是字符串 console.log(JSON.stringify(e));// 字符串 NaN console.log(JSON.stringify(f));// 字符串 {} console.log(JSON.stringify(g));// 字符串 []
用下面这个方法才可以
let toString = (a) => a === undefined ? String(undefined) : JSON.stringify(a) console.log(toString(a)); // 字符串 true console.log(toString(b));// 字符串 2 console.log(toString(c));// 字符串 null console.log(toString(d));// 字符串 undefined console.log(toString(e));// 字符串 NaN console.log(toString(f));// 字符串 {} console.log(toString(g));// 字符串 []
但是实际开发,null和undefined往往都需要转换为空字符串而不是'null' 或‘undefined’
那么就用vue源码里面的一个方法
// 如果null和undefined需要转换成空字符串,那么就用下面的方法【vue源码里面有的】 let a = true let b = 2 let c = null let d = undefined let e = NaN let f = {} let g = [] function isPlainObject(obj) { return Object.prototype.toString.call(obj) === "[object Object]"; } function toString(val) { if (val === null || val === undefined) return ""; if (Array.isArray(val)) return JSON.stringify(val); if (isPlainObject(val) && val.toString === Object.prototype.toString) return JSON.stringify(val); return String(val); } console.log(toString(a)); // 字符串true console.log(toString(b)); // 字符串2 console.log(toString(c)); // 空字符串 console.log(toString(d)); // 空字符串 console.log(toString(e)); // 字符串NaN console.log(toString(f)); // 字符串 {} console.log(toString(g)); // 字符串 []
其实,也可以自己写一个
let a = true let b = 2 let c = null let d = undefined let e = NaN let f = {} let g = [] // let toString = (a) => a === undefined ? String(undefined) : JSON.stringify(a) let valIsNaN = v => { if (v!==v){ return true } return false } let toString = (a) => { if( a===undefined || a === null )return '' else if(valIsNaN(a))return 'NaN' else return JSON.stringify(a) } console.log(toString(a)); // 字符串true console.log(toString(b)); // 字符串2 console.log(toString(c)); // 空字符串 console.log(toString(d)); // 空字符串 console.log(toString(e)); // 字符串NaN console.log(toString(f)); // 字符串 {} console.log(toString(g)); // 字符串 []
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通