javascript - 获取在标记模板中传递的变量名称

标签 javascript ecmascript-6

我想知道是否有一种简单的方法可以在标记的模板函数中检索变量名称。更清楚地说,这是代码:

let date = "2018"; //can be undefined
let description = "my description"; //can be undefined
let age; //can be undefined, and it is here
    function processString(parts) {
        var res = parts[0];
        for (var i=1; i<parts.length; i++) {
            if (arguments[i]) res += /*** arguments[i] is the value, I want to append the variable name too***/ arguments[i];
            res += parts[i];
        }
        return res;
    }
    console.log(processString`
    ${date}
    ${description}
    ${age}
    `);

这是结果

2018
my description
20

我要这个

date: 2018
description: my description
age: 20

编辑: 整个目的是生成一个“可选”行的列表(当然原始代码更复杂,实际上它生成一个类似 SQL 的查询),但是如果定义了变量 arguments[i] 我想附加到结果string "variable_name: variable_value"请注意我编辑了函数 processString如果有任何解决方案,我更愿意编辑 processString 并保持干净的 console.log

最佳答案

为了扩展 Angelas 的回答,您可以传入对象文字,如:

{name}

相同
{"name" : name}

因此您可以访问名称和值。模板看起来像:

function template(str, ...args) {
  let result = "";
  for(var i = 0; i < str.length - 1; i++) {
    result += str[i];
    result += Object.entries(args[i])[0].join(" : ");
  }
  result += str[i];
  return result;
}

这样你就可以:

template`
  1 - ${{date}}
  2 - ${{description}}
`;

关于javascript - 获取在标记模板中传递的变量名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51012735/

相关文章:

javascript - React Hooks useState() 与对象

带有服务器时间 PHP 的 Javascript 时钟

javascript - 单击play()时不必要地下载多个音频文件

Javascript - React - 箭头函数用法理解

javascript - 如何从 React Native javascript 语法切换到 es6

javascript - WebStorm JavaScript 解构赋值

javascript - Jquery悬停停止

javascript - 如何在 Javascript 中实现这个 C++ 模式?

结合返回嵌套函数的 JavaScript 函数声明或表达式

javascript - 如何使用lodash过滤数据