在JavaScript中,插入变量到字符串的最佳方式是什么?我猜这不是最佳方式:
var coordinates = "x: " + x + ", y: " + y;
在Java中,String
是不可变的,做类似上述操作会不必要地创建和丢弃String
。Ruby也类似,并且有一种很好的方法来完成上述操作:
coordinates = "x: #{x}, y: #{y}"
JavaScript有类似的东西吗?
在JavaScript中,插入变量到字符串的最佳方式是什么?我猜这不是最佳方式:
var coordinates = "x: " + x + ", y: " + y;
在Java中,String
是不可变的,做类似上述操作会不必要地创建和丢弃String
。Ruby也类似,并且有一种很好的方法来完成上述操作:
coordinates = "x: #{x}, y: #{y}"
JavaScript有类似的东西吗?
在ES6中引入了“模板字符串”(template strings)。
MDN文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals
const name = "Nick"
const greeting = `Hello ${name}` // "Hello Nick"
${}
位置的方式。单引号只表示普通字符串,并且会被解释为这样的字符串。 - Nick Bradyhttps://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
在JavaScript中,这是可以的。然而,没有一个很好的内置等价于sprintf
或String.format
,但是你可以自己构建。
不要担心“不必要”的字符串对象。那绝对是微观优化。如果需要额外的微小性能或内存优化时再考虑它,但在分布式软件中,你可能不需要这样做。
var preX = 'x: '
, preY = 'y: '
, coords
;
coords = preX + x + preY + y;
preX
(等等)变量,而无法更改字符串文字。 - Platinum Azure