博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
let 和const
阅读量:5126 次
发布时间:2019-06-13

本文共 1467 字,大约阅读时间需要 4 分钟。

let 命令

es6新增了let命令,用于声明变量,与var用法类似,但是使用let声明变量只在它所在的块内有效,而var则是定义的全局变量
{    let a=10;    var b=1;}a   //a is not defined,外部的a不能访问到上面块中定义的a变量b   //1

  

let不存在变量提升提升

//使用var会发生变量提升,当脚本开始运行使用var命令声明的变量已经存在console.log(foo);   //undefinedvar foo=2;console.log(foo);   //报错ReferenceErrorlet foo=2;          //使用let声明,声明的变量一定要在声明之后使用,否则会报错

 

let不允许重复声明

let不允许在相同作用域内重复声明同一个变量

//报错function(){    let a=10;    var a=1;    //let a=3;}

 

const命令

const用于声明常量,并且该常量那个是只读常量,一旦声明该常量就不能被更改

const a=1;a       //1a=2;    //报错

 

并且const只声明,不赋值也会报错。

const a;    //报错

 

const变量和let一样只能在声明之后使用,并且命令生命的变量也不会提升,同样也不可以重复声明。

const本质

const的常量不能够更改实质上并不是变量的额值不能更改,而是变量指向的内存地址不能变动。

块级作用域

es5只有全局作用域和函数作用域,但是没有块级作用域。

没有块级作用域导致的问题

  1. 内层变量可能会覆盖外层变量
  2. 用来计数的循环变量泄露为全局变量
for(var i=0;i<10;i++){    console.log(i)}console.log("外部"+i)初出结果:123456789外部10

 

可以看出外部的i会受到循环体中i的影响,如果使用let就会有块级作用域,最后就会显示,外部i不能找到就会报错。

es6的块级作用域

在块级作用域中,外层作用域不能访问内层作用域的变量,,但是内层作用域可以定义外层作用域的同名变量。

function example(){    let n=5;    if(true){        let n=10;   //内层作用域可以和外层作用域声明同名变量    }    console.log(n);     //5,外层作用域不会受到内层作用域的影响}

 

块级作用域与函数声明

在es5中规定,函数只能在顶层作用域和函数作用域之中声明,不能再块级作用域中声明。

但是es6有所改变:

  1. 允许在块级作用域内声明函数
  2. 函数声明允许类似var,会提升到全局作用域或函数作用头部。
  3. 函数声明会提升到块级作用域头部
  4. 但是es6规定,在块级作用域中声明函数类似于let,在块级作用域之外不能引用。
  5. 但是需要避免在块级作用域中声明函数,一定要使用函数表达式形式写,而不是韩红素声明语句
//函数声明语句{    let a="test"    function(){        return a;    }}//函数表达式{    let a="test";    let f=function(){        return a;    };}//并且块级作用域一定要有大括号,才能声明函数

 

转载于:https://www.cnblogs.com/zzzha/p/9435790.html

你可能感兴趣的文章
cogs 547:[HAOI2011] 防线修建
查看>>
WebForm
查看>>
nginx 编译安装
查看>>
1001 A+B Format (20 分)
查看>>
while中的break
查看>>
tomcat 访问去掉项目名 直接访问 localhsot
查看>>
C#委托的介绍(delegate、Action、Func、predicate)
查看>>
hbase rest api接口链接管理【golang语言版】
查看>>
IOS的七种手势
查看>>
hadoop中map和reduce的数量设置问题
查看>>
剑指offer
查看>>
Mdi悬浮子窗体不超过主窗体边界
查看>>
再论递归
查看>>
[给ASP.NET 初学者的话]不要练功练了三年,才发现自己必须「砍掉重练」!....学习ASP.NET之前,请先把自己杯中的水倒掉...
查看>>
集合框架(一) ----------Map集合遍历的方法
查看>>
2015.5.21 Core Java Volume 1
查看>>
InnoDB还是MyISAM?
查看>>
struts2拦截器详解
查看>>
Mysql常用语句
查看>>
.Net学习笔记----2015-06-30(超市收银系统01-仓库类)
查看>>