js把一个变量的内容转换成字符串

Posted on   猫头唔食鱼  阅读(1472)  评论(0编辑  收藏  举报
      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)); // 字符串 []
复制代码

 

编辑推荐:
· 基于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最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示