tslint no-var-keyword - “禁止使用‘var’关键字”的目的是什么?

use*_*495 3 typescript tslint angular

tslint no-var-keyword(“禁止的‘var’关键字”)的目的是什么?tslint 似乎在我的代码中每次出现 var 关键字时都会记录一个错误。tslint 是否说明应在 ng2 中无条件排除 var 关键字?如果是,那为什么?

Pet*_*one 7

此处记录了规则及其基本原理https://palantir.github.io/tslint/rules/no-var-keyword/

使用 var 声明变量有几个边缘情况行为,这使得 var 不适合现代代码。var 声明的变量以其父函数块为作用域,忽略其他控制流语句。vars 有声明“提升”(类似于函数)并且可以在声明之前使用。

由 const 和 let 声明的变量的作用域是定义它们的块,并且不允许在声明之前使用或用另一个 const 或 let 重新声明。

针对您的第二个问题,这与 Angular、ng2 或任何其他版本无关。这是一个打字稿问题。是的,他们试图让你var完全放弃,支持letconst

let 和 var 的区别在于作用域。您必须在使用前进行声明,并且可以在嵌套范围内重新声明。在 TS 中,您也可以借此机会声明不同的类型,尽管我不认为这是一种编程风格。


Gre*_*eek -2

'var' 已被弃用,取而代之的是 'let'。

前者创建一个全局变量,这通常被认为是不好的做法,而后者创建一个作用域变量。

因此,默认情况下,lint 强制使用作用域变量。

  • 不完全是,“var”创建了一个_function_范围的变量(与许多其他具有块范围变量的编程语言相比,这是不寻常的,因此引入了“let”,其可见性可能更熟悉)。 (13认同)