字符串格式的延迟评估

时间:2018-10-13 17:48:53

标签: javascript string formatting

我正在使用我的ReactJS项目中使用的URL构建一个constants.js文件。这些字符串包括可与URL一起使用的查询参数。但是,这些字符串中使用的值仅在使用该字符串的组件中可用,而在常量文件本身中不可用。例如,我想要这样的东西:

export const BASE_URL = 'https://example.com';
export const FOO_QUERY = '?foo=%s';

其中%s只是一个占位符,以后可以在组件中替换。 (出于示例目的,我从C借用了printf()语法。)在JavaScript中执行类似操作的正确语法是什么?甚至有可能吗?

3 个答案:

答案 0 :(得分:4)

我可能会在函数中使用模板文字:该组件使用foo值调用该函数:

export const fooQuery = foo => `?foo=${foo}`;

用法:

const query = fooQuery("foo value");

答案 1 :(得分:1)

有了标记的模板文字,您可以做到:

 function query(parts, ...pos) {
   return apply(...args) {
     return parts.map((part, i) => part + args[ pos[i] ]).join("");
   }
}

可用作:

 const find = query`?name=${0}&fullname=${0}&age=${1}`;

 console.log(find("jonas", 18));

答案 2 :(得分:0)

let string = 'bar';
console.log("Foo %s", string);
var teststr = (string) => `Foo ${string}`; //result: Foo bar