Javascript:将变量从父函数传递给子函数

时间:2020-08-19 10:06:49

标签: javascript function

我想将许多变量传递给子函数,并且所传递的变量也应该传递给下一个子函数。每次将它们作为参数传递都是一件繁琐的工作。我想知道在Js中执行此操作的更好方法是什么。我尝试使用 this 关键字,但不确定这是否是实现此目的的正确方法。

var scriptConfig = {
  availableOptions: {
    version: "1",
    type: "one",
    status: "free",
  },
  availableCategories: {
    navbar: true,
    hasCoupon: true
  }
};

window.addEventListener('load', function() {
  let options = scriptConfig.availableOptions;
  let version = options.version;
  renderDashboard(options, version);
});

function renderDashboard(options, version) {
  createNavbar(options, version);
}

function createNavbar(options, version) {
  console.log(options);
  console.log(version);
}

使用此

var scriptConfig = {
  availableOptions: {
    version: "1",
    type: "one",
    status: "free",
  },
  availableCategories: {
    navbar: true,
    hasCoupon: true
  }
};

window.addEventListener('load', function() {
  this.options = scriptConfig.availableOptions;
  this.version = options.version;
  this.renderDashboard();
});

function renderDashboard() {
  this.createNavbar();
}

function createNavbar() {
  console.log(this.options);
  console.log(this.version);
}

有人可以建议哪种更好的方法吗?如果有人对以上代码行提出更好的编码实践,那也很好。

3 个答案:

答案 0 :(得分:1)

JS中有[apply()][1]函数。

它使您可以在调用函数时指定this是什么,并提供其他参数。

答案 1 :(得分:1)

好吧,如果您不断地将变量从一个函数传递到其子函数,或者换句话说从一个ui组件传递至其ui组件,那么您在这种情况下要做的就是在这些实体(函数,组件,或根据输出的类型随意命名。

应该避免使用全局变量,但是在某些用例中,它们是唯一有效的解决方案,全局变量的一个用例是上下文-有些人区分上下文和全局状态,因为上下文是只读的,而全局是状态是可变的,为了管理全局状态,javascript有很多库可以像redux这样处理。

假设您使用的是不可变的上下文,那么最好的选择是全局变量,显然,您应该将该全局变量隐藏在getter函数的后面,以使代码更加简洁

2017-12-03T09:15:30

最后不要在实例/类上下文之外使用UTC关键字,这将产生难以阅读的不良代码,并且更容易出错,这也是ES6添加语法糖{{ 1}}使得使用此代码的代码仅在此处使用它,而在常规函数中则不使用(尽管它仍然是有效的语法)

答案 2 :(得分:1)

在全局范围(外部类)中使用update-alternatives并不是一个好主意,因为它会污染this对象。我建议您创建一个类并包装所有如下内容:

Window