let var, Const关键字用于在typecript和javascript中声明变量。变量可以全局或局部声明。
Var关键字
var关键字是用来声明javascript的变量的。Typecript的行为也与功能范围相同
- 用这个关键字声明的变量,如果是在函数中声明的,则是局部的,如果是在外部声明的,则是全局的。
- 如果没有使用var关键字来声明变量,它就假定是全局变量。
- 用var关键字重新声明变量,它不会失去它的原始值
- 变量在没有声明和初始化其值的情况下未被定义而返回。
例子和用法
var value = 11;
var value1;
function myfunction() {
value = 456; // allowed
value2 = 14
console.log(value) // 456
console.log(value1) // undefined
console.log(value2) // 14
}
myfunction();
Let关键字
Let关键字引入了ES6-ES2015,它被用来在块范围内声明一个变量。
let value = "abc";
console.log(value); // abc
if (true) {
let value = "newabc";;
console.log(value); // newabc
}
console.log(value); // abc
在当前上下文中用let重新声明同一变量会抛出SyntaxError - 不能重新声明封锁范围的变量值。
let value = "abc";
let value = "newabc";
让变量托管
当变量在没有声明的情况下被使用时,抛出Uncaught ReferenceError: value is not defined
function myfunction() {
console.log(value);
}
myfunction()
const关键字
const关键字与let相同,但也有区别。用const声明的变量必须立即初始化,一旦声明了const变量,它的值不会因为重新赋值而改变。
const value = 123;
function myfunction() {
value = 123; // not allowed
}
ES6的Let和Const的时间性死区
这是在ES6中引入的。在没有使用let和const声明的情况下调用变量,会引发ReferenceError。这是为了避免编程中的异常,并为调试变量提供保障。
Let和var关键字的区别
两者都是用来声明变量的,Let在封锁的范围内创建一个变量,var在全局范围内创建一个变量,不同的例子如下所示
// example var
for (var val = 0; val < 2; val++){
console.log(val)
}
console.log(val) // 5
// example let
for (let val = 0; val < 2; val++){
console.log(val)
}
console.log(val)// undefined