变量声明
最近在研究angular 2.0,在写一个test的时候,发现了他申明变量的方式尽然没有见过,是这样的:
const HEROES: Hero[] = [
{ id: 11, name: 'Mr. Nice' },
{ id: 12, name: 'Narco' },
{ id: 13, name: 'Bombasto' },
{ id: 14, name: 'Celeritas' },
{ id: 15, name: 'Magneta' },
{ id: 16, name: 'RubberMan' },
{ id: 17, name: 'Dynama' },
{ id: 18, name: 'Dr IQ' },
{ id: 19, name: 'Magma' },
{ id: 20, name: 'Tornado' }
];
突然很郁闷,const是什么东西,后来找了一些资料,才知道let和const是JavaScript里相对较新的变量声明方式。
那么他们和var又有什么区别呢
1.在语法上他们的用法是一样的,不一样的是语义。
2.var声明的变量可以在包含它们的函数外访问,例如
function f() {
var a = 10;
return a;
}
var g = f();
g(); // returns 10;
3.当用let声明一个变量,它使用的是词法作用域或块作用域。块作用域变量在包含它们的块或for循环之外是不能访问的。
function f(input: boolean) {
let a = 100;
if (input) {
// Still okay to reference 'a'
let b = a + 1;
return b;
}
// Error: 'b' doesn't exist here
return b;
}
4.至于const,const 声明是声明变量的另一种方式。它们与let声明相似,但是就像它的名字所表达的,它们被赋值后不能再改变。 换句话说,它们拥有与let相同的作用域规则,但是不能对它们重新赋值。
这里可以看到,const声明过a之后,第二次声明a,会报错
以上就是我个人的一些见解。