一、var , let , const 的区别
在原始JS中使用var进行变量的定义,var定义的变量只存在全局作用域和局部作用域,两个作用域,在ES6新增了两个定义变量的方式:let、const,那么这三个定义变量的方式有什么区别呢?下面,我们来具体分析。
1、var定义变量的特点
(1).变量提升:把变量的申明提升到作用域的最前面

输出:undefined
注意js中的方法function也具有变量替升
(2).var定义的变量可以反复定义,当然后面的会覆盖前面的
(3). 局部作用域:var在函数内部定义的变量成为局部变量,在作用在局部

(4). 全局作用域:var在函数外定义的变量成为全局变量,作用于全局

2、Let、const 定义变量的特点
(1).let定义的变量具有块级作用域

(2).let和const存在暂时性死区问题

(3).const是定义常量,let定义变量
3、let、var、const 三者的区别
1.作用域不同,新增块级作用域
2.var定义变量存在变量的默认提升功能 let与const 不存在变量的提升问题
3. var 可以重复定义 ,let与const不允许重复定义
4.var定义的变量默认挂载到window对象上,let和const不会

ES6 提出了两个新的声明变量的命令:let和const,声明变量的方式这么多,我们究竟怎么选择更好呢?建议使用的优先级:const > let > var
首先const声明常量的好处,一是阅读代码的人立刻会意识到不应该修改这个值,二是防止了无意间修改变量值所导致的错误,另外其实js编译器也对const进行了优化,可以提高代码的执行效率;
另外let声明的变量没有预编译和变量升级的问题,先声明再使用其实更为规范,而let本身是一个块级作用域,很多时候我们在写代码的时候都希望变量在某个代码块内生效,也更为方便。
最后说一点就是使用的场景说明:let一般应用于基本数据类型;const 一般应用于引用数据类型,也就是函数对象等.
二、字符串模板
ES6简化了字符串的拼接方式,有了字符串模板,使用··符号${变量名}构造模版

三、数据解构
1.数据解构:将复杂数据内容,进行提取,解构成简单数据
解构的语法:左右结构相同,属性和变量名称相同
保证左侧的变量==右侧的key

2.解构做交互变量

四、箭头函数 和 function 对比
ES6允许使用“箭头”(=>)定义函数,箭头函数可以说是ES6的一大亮点,使用箭头函数可以简化编码过程,使代码更加简洁。
1.箭头函数书写方式

2.箭头函数的简写
如果箭头函数中只有一个参数,那么可以省略()

如果箭头函数有且只有一行语句,并且是return语句的,可以省略 () 和 return.

3.箭头函数 和 function 对比
(1).箭头函数 和 function 的this的指向性对比
function 中this对象的指向性不明确,随之环境的变化会发生变化

箭头函数this用于指向生产环境 ,不跟随调用这发生变化 
(2).箭头函数 和 function 提升对比
function 定义的函数,具有默认的提升

箭头函数 不存在函数的提升

(3).箭头函数 和 function 构造函数对比
function 可以作为构造函数,因为this会根据new 指向空对象
箭头函数 无法作为构造函数,因为thsi不会变动。
(4).箭头函数 和 function arguments 对比
function 函数存在arguments集合

箭头函数不存在arguments, rest参数 代替arguments
参数集合的箭头函数括号里没有变量,则打印所有实参,如果括号里有参数,打印出改参数以外的数据 
以上就是箭头函数 和 function 对比。
本文详细探讨了ES6中var、let和const在变量定义上的差异,包括作用域、提升和重定义等方面。此外,还介绍了字符串模板的便利性、数据解构的使用以及箭头函数与传统function的对比,重点讨论了箭头函数的this指向、提升、构造函数行为和arguments处理的差异。
595

被折叠的 条评论
为什么被折叠?



