[英]Prefixing a String to an array vs Prefixing a string to an array of objects - React/JS
为什么使用以下声明和赋值
const num = [1,2,3,4,5];
这是允许的吗?会给 [1,2,3,4,5] "Jello"
console.log(num + "Jello");
但是通过以下声明和赋值
const num = { Flavour: "Apple" };
这不会给你苹果“果冻”
console.log(num + "Jello");
(注意:下面链接到 MDN 上的页面,最初是作为 Mozilla 浏览器中 JS 的文档,但现在适用于此之外。)
首先,要让a + b
返回一个合理的结果, a
和b
应该是同一类型。 如果它们是不同的类型,则必须将它们强制转换为相同的类型(另请参阅 ECMAScript 2021,第 7.1 节“类型转换” )。
此外, 加法运算符仅适用于两种类型:数字和字符串(另请参阅 ECMAScript 2021,第 13.8 节“加法运算符” )。 基本上,如果操作数不是两个数字,那么基本上通过调用它们的toString()
方法将它们强制转换为字符串( 确切的过程稍微复杂一点,并考虑原语,例如null
,它们不有一个toString
方法)。
对于 arrays, Array.prototype.toString
将在每个元素上调用toString()
并用逗号连接结果(它的内容在Array.prototype.join的规范中定义)。 更通用的Object.prototype.toString
对于 object 文字,将只返回'[object Object]'
。 该值来自Object.prototype.toString的规范,格式为`[object ${Tag}]`
,其中Tag
是表示 object 的内置类型的字符串。
要获取包含 object 表示的字符串,您需要使用类似JSON.stringify
:
JSON.stringify({ Flavour: "Apple" }) + ' Jello'
如果你只想要值,而 object 是平面的(即没有值本身是对象),你可以使用Object.values
:
Object.values({ Cost: "Cheap", Flavour: "Apple" }) + 'Jello'
如果你想用逗号以外的东西连接值,用分隔符显式调用join
:
Object.values({ Cost: "Cheap", Flavour: "Apple" }).join(' ') + ' Jello'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.