在 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;
这当然应该通过基准测试/分析来支持,但是每帧创建许多字符串通常是不必要的垃圾的来源,这可能会导致卡顿。