通俗易懂TypeScript系列二:声明和解构(上)

*我想了想这个系列我打算分上下两集来讲,避免因为太长看起来太累,尽量做到简短又能让大家通熟易懂,这是我的初心,有什么好建议希望大家提出
1、let声明
一直以来 JavaScript 都是通过 var 关键字定义变量,let和const 是ES6新增两个变量声明方式
(1).现在我们使用var声明变量看看会发生什么?
代码一:
var a = 124
var a = 234;
console.log(a);//输出234
结论:var多次声明一个变量并不会报错,后面一个变量,会覆盖前面声明的变量
代码二:
for (var i = 0; i < 5; i++) {
setTimeout(function () {
console.log(i);//连续输出5
})
}
结论:用var声明的变量i,每一次循环,新的i值都会覆盖旧值,所以连续输出5
代码三:
console.log(a);//输出123
var a = 123 ;
结论:用var声明的变量,可以先使用后声明,但在严格模式下 会报错 undefined
代码四:
(function () {
if (true) {
var a = 100; //在if块内部声明的变量a,在块外面是可以使用的
console.log(a); //输出100
}
console.log(a); //输出100
})();
结论:用var定义的变量作用域在函数中都有效,不存在块级作用域
(2).现在我们用let变量声明看看会发生什么?
代码一:
let a = 124
let a = 234;
console.log(a);//编译器无法编译,直接报错
结论:let多次声明一个变量编译不会通过,直接报错
代码二:
for (let i = 0; i < 5; i++) {
setTimeout(function () {
console.log(i);//会逐渐输出0-4
})
}
结论:用let声明的变量i,在每次循环都会分配独立的变量,所以不会被覆盖
代码三:
console.log(a);//报错
var a = 123 ;
结论:编译不通过,let声明的变量不存在变量提升,一定声明后才能使用;
代码四:
(function () {
if (true) {
let a = 100;
console.log(a); //输出100
}
console.log(a); //Uncaught ReferenceError: a is not defined
})();
结论:用let声明的变量有块级作用域,当在if外面打印a时会报引入错误,a没有定义
2、const声明
const也是声明变量的一种方式,一般用于声明一个常量,被赋值后不能够改变const 与 let 不同点在于:
(1). const 如果声明的变量如果是简单的值,则不能改变变量的值,修改会报错
const A=123;
A =234;
console.log(A);//报错
(2). const 如果声明的是复合类型的变量,则只保证变量地址不变,值可以变
const obj = {a: 123};
obj.a = 234;
console.log(obj.a); // 输出:234
foo = {a: 1111}; // 报错
个人学习心得,大神路过 ,不喜勿喷😊 ,如果你觉得不错,欢迎点赞,订阅,分享出去给需要的人,笔者将非常感谢
<完>
如果你是喜欢看书的朋友,不妨点击【有惊喜】这是我在亚马逊买的电子书,都非常珍贵。希望你能喜欢
作者:小处成就大事
简介:一个喜欢分享和学习的前端开发程序猿,平时喜欢看看书,游泳,爬山,户外骑行等,期待与志同道合的你成为朋友,一起交流、一起进步。
初衷:闲时喜欢写一些文章分享,记录丰富自己。可能没有别人写得好,但是我写的每一篇都非常用心和投入。真心希望来到这里对你有所收获,我将非常开心很欣慰。
博客:小处成就大事_新浪博客
如果有志同道合的朋友不妨加微信一起交流和学习,期待你的到来
