在 JavaScript 中的字符串中插入变量的最佳方法是什么?我猜不是这个:
var coordinates = "x: " + x + ", y: " + y;
在 Java 中,String
s 是不可变的,执行上述操作会不必要地创建和丢弃String
s。Ruby 是类似的,并且有一个很好的方法来做上面的事情:
coordinates = "x: #{x}, y: #{y}"
JavaScript 是否存在类似的东西?
在 JavaScript 中的字符串中插入变量的最佳方法是什么?我猜不是这个:
var coordinates = "x: " + x + ", y: " + y;
在 Java 中,String
s 是不可变的,执行上述操作会不必要地创建和丢弃String
s。Ruby 是类似的,并且有一个很好的方法来做上面的事情:
coordinates = "x: #{x}, y: #{y}"
JavaScript 是否存在类似的东西?
在 ES6 中作为“模板字符串”引入
MDN 文档:https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals
const name = "Nick"
const greeting = `Hello ${name}` // "Hello Nick"
这在 JavaScript 中没问题。没有与sprintf
or相当的内置等效项String.format
,但是,您可以构建自己的.
不要担心“不必要的”字符串对象。这绝对是微观优化。如果您需要额外的一点点性能或内存优化,请解决它,但在分布式软件中,您可能不需要。
https://www.npmjs.com/package/stringinject
https://github.com/tjcafferkey/stringinject
我创建了这个函数来做到这一点,它允许你传入一个字符串和一个带有键的对象,这些键将用它们的值替换字符串中的占位符值,如下所示:
var str = stringInject("My username is {username} on {platform}", { username: "tjcafferkey", platform: "GitHub" });
// My username is tjcafferkey on Github
如果出于某种原因,您每秒执行多次此操作并在每次调用时多次引用字符串,您始终可以将字符串本身存储为变量。
var preX = 'x: '
, preY = 'y: '
, coords
;
coords = preX + x + preY + y;
这当然应该得到基准测试/分析的支持,但每帧创建许多字符串通常是不必要的垃圾来源,可能导致线路卡顿。