传递参数以在javascript中起作用

时间:2019-02-21 21:57:35

标签: javascript typescript ecmascript-6 ecmascript-2017 ecma

我有一个下面的函数(例)

let fn = (() => {
  let ab = {}; 
  let register = () => {
    console.log("hello" + ab[x])
  };
  return (x,y) => {
    ab[x] = y;
    return register();
  };
})();

仅当我按以下方式调用时,此功能才起作用

let x = 'key';
let y = 'value';
fn(x,y);

是否有机会像

一样直接拨打电话
fn('key', 'value');

我必须在函数中进行哪些更改才能直接调用

2 个答案:

答案 0 :(得分:1)

问题是您的register函数不了解x。您需要通过上一个函数传递它:

let fn = (() => {
  let ab = {}; 
  let register = (x) => {
    console.log("hello" + ab[x])
  };
  return (x,y) => {
    ab[x] = y;
    return register(x);
  };
})();

fn("key", "value");

答案 1 :(得分:0)

我相信这是因为您没有在函数中定义参数。

   let fn = ((x,y) => {
  let ab = {}; 
  let register = () => {
    console.log("hello"+ab[x])};
    return (x,y) => {
      ab[x]=y;
      return register();
    };
})();