当前位置: 首页 > 面试题库 >

在ES6 / Typescript中将_(下划线)变量与箭头功能一起使用

荆乐
2023-03-14
问题内容

我在一个Angular示例中遇到了这个构造,我想知道为什么选择了这个构造:

_ => console.log('Not using any parameters');

我了解变量_表示不在乎/不使用,但是由于它是唯一的变量,因此没有任何理由更喜欢使用_:

() => console.log('Not using any parameters');

当然,输入的字符数不能少于一个。在我看来,()语法可以更好地传达意图,并且还更具体地说明类型,因为否则我认为第一个示例应该看起来像这样:

(_: any) => console.log('Not using any parameters');

万一重要,这是使用它的上下文:

submit(query: string): void {
    this.router.navigate(['search'], { queryParams: { query: query } })
      .then(_ => this.search());
}

问题答案:

之所以可以使用此样式(可能是在此处使用该样式)的原因_是比短一个字符()

尽管箭头函数允许单个参数不带括号,但它与零,单个解构,单个休止符和多个参数不一致:

let zeroParamFn = () => { ... };
let oneParamFn = param1 => { ... };
let oneParamDestructuredArrFn = ([param1]) => { ... };
let oneParamDestructuredObjFn = ({ param1 }) => { ... };
let twoParamsFn = (param1, param2) => { ... };
let restParamsFn = (...params) => { ... };

尽管is declared but neverused错误固定在打字稿2.0为下划线的参数,_也可以触发unused variable/parameter从棉绒或IDE警告。这是反对这样做的一个相当大的理由。

_通常可以用于忽略的参数(如已经解释的其他答案)。尽管这可能被接受,但是这种习惯可能会导致与_Underscore /Lodash命名空间发生冲突,并且在存在多个被忽略的参数时也会引起混淆。因此,正确命名带下划线的参数(在TS
2.0中受支持)是有益的,还节省了找出函数签名的时间以及为什么将这些参数标记为忽略的原因(这违背了将_参数作为快捷方式的目的):

let fn = (param1, _unusedParam2, param3) => { ... };

由于上述原因,我个人认为_ => { ... }代码风格是一种不好的语气,应该避免。



 类似资料:
  • 问题内容: 当ES6 Arrow函数似乎无法为使用prototype.object的对象分配功能时。请考虑以下示例: 在对象定义中显式使用arrow函数是可行的,但将Object函数与Object.prototype语法一起使用却不能: 就像概念证明一样,将Template字符串语法与Object.prototype语法一起使用确实可以: 我是否缺少明显的东西?我觉得示例2应该在逻辑上起作用,但是

  • 问题内容: 我在使用胖箭头功能时遇到了一些问题。如果该函数不是匿名函数,它将抱怨语法并且不会编译。 这个: 给我: 它指向等号(handleItemClick’=’)。 但是,这很好用: 我的webpack配置是否有问题,或者我缺少什么?感谢任何提示。 问题答案: 您正在尝试使用不属于ES6且es2015未涵盖的class字段,并对预设进行反应。 您可以使用Class属性transform bab

  • 问题内容: 这是在我的Angular代码中正常工作的ES5函数: 我想将其转换为ES6箭头功能 但是它给出了错误 ES6箭头功能是否与Angular不兼容? 编辑:我想也许Angular不能推断出该名称,因此无法注入它,但随后我将其记录到控制台,并确实显示了它: 问题答案: 正确。您的AngularJS版本与使用$ injector的箭头功能不兼容。 这主要是因为AngularJS 1.4.6使用

  • 问题内容: 我正在将ReactJS与Babel和Webpack一起使用,并使用ES6以及针对箭头功能的建议类字段。我知道箭头函数通过不重新创建每个呈现的函数(类似于构造函数中的绑定工作方式)来使事情更高效。但是,我不确定100%是否正确使用了它们。以下是我的代码在三个不同文件中的简化部分。 我的代码: Main.js SecondClass.js ThirdClass.js 题: 我上面的代码使用

  • 问题内容: 我正在将ReactJS与Babel和Webpack一起使用,并使用ES6以及针对箭头功能的建议类字段。我知道箭头函数通过不重新创建每个呈现的函数(类似于构造函数中的绑定工作方式)来使事情更高效。但是,我不确定100%是否正确使用了它们。以下是我的代码在三个不同文件中的简化部分。 我的代码: Main.js SecondClass.js ThirdClass.js 题: 我上面的代码使用

  • 问题内容: 我是React的新手,正在尝试了解语法。 我正在React 15环境中进行开发(使用react-starterify模板),并且一直在使用下面的VERSION 2中的语法,但是,我在Facebook的React页面上发现的大多数示例和教程都是VERSION 1。这两个,何时应在另一个之上使用? 版本1 版本2 问题答案: 第二个代码是 无状态功能组件, 并且是用于将组件定义为的函数的新