Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ES6中分配变量的Cleaner方法_Javascript_Arrays_Object_Ecmascript 6 - Fatal编程技术网

Javascript ES6中分配变量的Cleaner方法

Javascript ES6中分配变量的Cleaner方法,javascript,arrays,object,ecmascript-6,Javascript,Arrays,Object,Ecmascript 6,我有以下代码 const lower = U => U.toLowerCase(); const A = lower('A') const B = lower('B') const C = lower('C') const D = lower('D') ... 我如何表示这是一种更干净的方式?可以保证传递给函数的变量名和参数相同 我能想到的一个可能的解决办法是 const [ A, B, C, D ] = ['A', 'B', 'C', 'D'].map(lower) 有

我有以下代码

 const lower = U => U.toLowerCase();

 const A = lower('A')
 const B = lower('B')
 const C = lower('C')
 const D = lower('D')
 ...
我如何表示这是一种更干净的方式?可以保证传递给函数的变量名和参数相同

我能想到的一个可能的解决办法是

const [ A, B, C, D ] = ['A', 'B', 'C', 'D'].map(lower)

有没有不重复的解决方案?

您可以使用以前的变量名作为键的对象。它易于维护和迭代

const lower=U=>U.toLowerCase(),
对象={};
forEach(C=>object[C]=lower(C));

console.log(对象)这对我来说是一个“非常”有趣的问题,它帮助我理解了JavaScript中更深层次的东西(虽然不是完全理解)。好吧,长话短说,你可以这样做

var f=String.prototype.toLowerCase,
r=[];
r=[“A”、“B”、“C”、“D”].map(f.call,f);

控制台日志(r)那么,您是否试图以优雅的方式获取所有小写字母?为什么会出现问题?当前的实现有什么问题?为什么还需要变量?你就不能继续锁链,做你需要的吗?动态变量不好…当我需要添加另一个变量时,我需要做两个更改。我需要一个使用国际化的用例。例如,const ERROR_MSG=chrome.i18n.getMessage('ERROR_MSG')为什么不使用具有前一个变量名的对象作为键呢。它很容易维护和迭代。为什么?因为
调用
,就像其他任何方法一样,当您传递它时,它只是一个未绑定的函数。@Bergi很棒。。与
r=[“A”、“B”、“C”、“D”].map(Function.call、String.prototype.toLowerCase)没有什么不同谢谢。