baseToString
依赖
import isSymbol from '../isSymbol.js';源码
/** 声明 无穷大 变量 */
const INFINITY = 1 / 0;
/** 用于将 symbols 转化为原始值或字符串 */
const symbolToString = Symbol.prototype.toString;
/**
* 优化实现 'toString'
*
* @private
* @param {*} value 需要处理的值
* @returns {string} 返回一个字符串
*/
function baseToString(value) {
// 若参数为 string 类型,则提前返回自身,避免某些环境下的性能损失
if (typeof value == 'string') {
return value;
}
if (Array.isArray(value)) {
// 递归进行值转换(易受调用堆栈限制)
return `${value.map(baseToString)}`;
}
if (isSymbol(value)) {
return symbolToString ? symbolToString.call(value) : '';
}
const result = `${value}`;
return result == '0' && 1 / value == -INFINITY ? '-0' : result;
}原理
相关链接
参考
Last updated