Angular那些事Web前端之路让前端飞

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

2017-06-23  本文已影响102人  小处成就大事
比利时哈莉·哈雷森林的蓝铃花【摘自微软Bing】

*我想了想这个系列我打算分上下两集来讲,避免因为太长看起来太累,尽量做到简短又能让大家通熟易懂,这是我的初心,有什么好建议希望大家提出

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}; // 报错

个人学习心得,大神路过 ,不喜勿喷😊 ,如果你觉得不错,欢迎点赞,订阅,分享出去给需要的人,笔者将非常感谢

<完>

如果你是喜欢看书的朋友,不妨点击【有惊喜】这是我在亚马逊买的电子书,都非常珍贵。希望你能喜欢

作者:小处成就大事

简介:一个喜欢分享和学习的前端开发程序猿,平时喜欢看看书,游泳,爬山,户外骑行等,期待与志同道合的你成为朋友,一起交流、一起进步。

初衷:闲时喜欢写一些文章分享,记录丰富自己。可能没有别人写得好,但是我写的每一篇都非常用心和投入。真心希望来到这里对你有所收获,我将非常开心很欣慰。

博客小处成就大事_新浪博客

如果有志同道合的朋友不妨加微信一起交流和学习,期待你的到来

上一篇 下一篇

猜你喜欢

热点阅读