2016-08-09 122 views

回答

7

const代表constant,这表示变量不能在以后重新分配。

let类似于var除了它是块作用域,这意味着它可以在for环的内部被声明,并且将是本地的该for循环体(和为此不外面它存在)

后者与var变量不同,后者可以在任何地方声明,但始终是函数作用域的局部变量。

一般来说,尝试尽可能地将您的变量定义为const是一种很好的做法。

+0

值得注意 - 这不仅仅是针对TypeScript,而是针对JavaScript,因为现在ECMAScript 2015是标准。 –

+0

@AdrianWydmanski我会进一步说,它适用于任何提供'const' /'let'或'val' /'var'或'final'/not的语言。 – ssube

0

正如我在此期间做几乎排他性的功能编程,我发现constlet之间的命运很无用。 我永远不会重新赋值给名称。从不 - 不管语言。

话虽如此,我觉得使用有问题,原因有两个。

  • constlet长(不认真!)
  • const排序的通信回:嘿!我不断,但事实并非如此(当然是,但是...)我有多次的同事说是完全惊讶

,这是可能

const x = { foo: "bar" } 
x["foo"] = "Not bar!" 

确保名称和它的引用是const,但引用的对象不是。在打字稿就算你至少可以创造

type ROO = Readonly<SomeType> 
const x: ROO = someReferenceValue 
x.someProp = "A wanna be a bar!" //compile error 

所以对于打字稿const最后可能意味着const

+0

你的第二点是正确的TypeScript是错误的,建议所有变量都使用'const',除非需要重新赋值(参见:https://www.typescriptlang.org/docs/handbook/variable-declarations.html let vs const),因为在大多数编程语言中这不是常数。 ECMA6的例子都有“期望”的用法(const pi = 3.14159) - 我们可以想象所有的常量在编译时被原始值所替代。使用'const'作为变量是矛盾的。 TypeScript应限制ECMA6的用法,以阻止将'const'应用于复杂类型。 –

相关问题