let和const命令

2022-12-31 0 1,071

let指示

块级返回值

ES6追加了let指示,用作新闻稿表达式,其用语近似于var,但所新闻稿的表达式只在let指示所处的标识符块内有效率

let和const命令

像下面范例,var新闻稿的i是自上而下的,自上而下多于两个i,因此会输入i的最终的结果10,而let新闻稿的i是仅在块级返回值中有效率,因此输入的是6

不存有表达式提高

var指示会出现“表达式提高”现像,即表达式能在新闻稿以后采用,值undefined。let指示出现改变了句法犯罪行为,它所新闻稿的表达式很大要在新闻稿后采用,不然便会收起。

let和const命令

短暂性死区

如果块级返回值内存有let指示,它所新闻稿的表达式就“存取”那个地区,无须受内部的负面影响

let和const命令

在标识符块内,采用let指示新闻稿表达式以后,那些表达式都是不容用的

短暂性死区的本

不容许多次重复新闻稿

let不容许在相同返回值内多次重复新闻稿同两个表达式

let和const命令

块级返回值

什么是块级返回值

任何一对花括号({和})中的语句集都属于两个块,在这之中定义的所有表达式在标识符块外都是不容见的,我们称之为块级返回值

为什么要有块级返回值

ES5中多于函数返回值和自上而下返回值,没有块级返回值,这会导致一些场景不合适

表达式非预期的多次重复覆盖

let和const命令

因为判断里的tmp表达式提高,因此覆盖掉了第两个tmp的值,导致第两个输入是undefined

用作循环计数的表达式泄露为自上而下表达式

let和const命令

很多情况下,像这样的i,开发者只是定义用来控制循环,循环结束后却并没有消失,而是泄露为了自上而下的表达式

ES6的块级返回值

以后ES5中我们需要实现类似块级返回值的效果是采用立即执行函数

ES6中,let实际上为js追加了块级返回值,使得立即执行函数无须必要了。

const指示

const新闻稿两个只读的常量,一旦新闻稿,常量的值就不能出现改变,因为const新闻稿的表达式不得出现改变值。这意味着,const一旦新闻稿表达式,就必须立即初始化,不能留到以后赋值。

let和const命令

const的返回值与let指示相同:只在新闻稿所处的块级返回值内有效率,const指示新闻稿的常量也不会提高,同样存有短暂性死区,只能在新闻稿后采用。采用const新闻稿常量也与let一样,不容多次重复新闻稿。

栈内存和堆内存

为什么这里突然要介绍栈内存和堆内存呢,这和后面将要介绍的const指示的本质有关。

javaScript中的表达式分为基本类型和引用类型。

基本类型是保存有栈内存中的简单数据段,它们的值都有固定的大小,保存在栈空间,通过按值访问

引用类型是保存有堆内存中的对象,值大小不固定,栈内存中存放的该对象的访问地址指向堆内存中的对象,js不容许直接访问堆内存中的位置

const的本质

const实际上保证的并不是表达式的值不得改动,而是表达式指向的那个内存地址不得改动。但对于复合类型的数据而言,表达式指向的内存地址保存的只是两个指针,const只能保证那个指针是固定的,至于它指向的数据结构是不是可变的,这完全不能控制。因此,将两个对象新闻稿为常量时必须非常小心。也就是说对象常量不容变的只是那个地址,即不能把foo指向另两个地址,但对象本身是可变的,依然能为其添加新属性

let和const命令

如果真的想将对象冻结,应该采用Object.freeze方法

小伙伴们今天的学习就到这里了,如果觉得本文对你有帮助的话,欢迎转发,评论,收藏,点赞!!!

每天学习进步一点点,就是领先的开始。如果想继续提高,欢迎关注我,或者关注公众号”祯民讲前端“。大量前端技术文章,面试资料,技巧等助你更进一步!

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务