首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >JS篇(012)- 复杂数据类型如何转变为字符串

JS篇(012)- 复杂数据类型如何转变为字符串

作者头像
齐丶先丶森
发布2022-05-12 20:22:42
发布2022-05-12 20:22:42
7970
举报
文章被收录于专栏:前端面试秘籍前端面试秘籍

答案: 1.首先,会调用 valueOf 方法,如果方法的返回值是一个基本数据类型,就返回这个值, 2.如果调用 valueOf 方法之后的返回值仍旧是一个复杂数据类型,就会调用该对象的 toString 方法, 3.如果toString方法调用之后的返回值是一个基本数据类型,就返回这个值, 4.如果toString方法调用之后的返回值是一个复杂数据类型,就报一个错误。 解析:

代码语言:javascript
复制
// 1;
var obj = {
    valueOf: function() {
        return 1;
    }
};
console.log(obj + ""); //'1'
// 2;
var obj = {
    valueOf: function() {
        return [1, 2];
    }
};
console.log(obj + ""); //'[object Object]';
// 3;
var obj = {
    valueOf: function() {
        return [1, 2];
    },
    toString: function() {
        return 1;
    }
};
console.log(obj + ""); //'1';
// 4;
var obj = {
    valueOf: function() {
        return [1, 2];
    },
    toString: function() {
        return [1, 2, 3];
    }
};
console.log(obj + ""); // 报错 Uncaught TypeError: Cannot convert object to primitive value

拓展:

代码语言:javascript
复制
var arr = [new Object(), new Date(), new RegExp(), new String(), new Number(), new Boolean(), new Function(), new Array(), Math] console.log(arr.length) // 9
for (var i = 0; i < arr.length; i++) {
    arr[i].valueOf = function() {
        return [1, 2, 3]
    }
    arr[i].toString = function() {
        return 'toString'
    }
    console.log(arr[i] + '')
}

1、若 return [1, 2, 3]处为 return "valueof",得到的返回值是 valueof toString 7valueof 说明:其他八种复杂数据类型是先调用 valueOf 方法,时间对象是先调用 toString 方法 2、改成 return [1, 2, 3],得到的返回值是 9toString 说明:执行 valueof 后都来执行 toString [参与互动](https://github.com/yisainan/web-interview/issues/181)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-30,如有侵权请联系 cloudcommunity@tencent.com 删除
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档