ES6-----声明变量
Posted yuaima
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ES6-----声明变量相关的知识,希望对你有一定的参考价值。
以前定义变量
var a="7";
之前作用域: 全局或者函数内;
1 var a="9"; 2 function fn(){ 3 console.log(a) 4 var a="5" 5 } 6 fn()
这个结果是undefined
以为函数内有一个变量也为a,则局部变量起作用,有可能有的人会说,var a="5"在console.log(a)下面啊,还没有初始化局部变量a啊,但是var生明变量有提升的作用,上面的代码等同于
var a="9"; function fn(){ var a; console.log(a) a="5" } fn();
声明会提前,所以结果才是undefined;
现在ES6 声明变量 let,const;
(1) let 声明变量
let a=5
具有块级作用域
{
这里面声明的变量只在这里有效
}
例子:
if(true){ var a="5"; let b="6"; } console.log(a);//结果为5 console.log(b);//报错b未定义
块级作用域有:
if(){}
for(){}
while(){}
let a="9"; function fn(){ console.log(a) let a="5" } fn()
这个结果是报错,原因是,如果块级内有变量的定义,则一定会有块级中的那个变量,但是let没有提升功能,所以是报错,而不是undefined
如果块级内没有这个变量,就以外面父辈的块级中定义的为主
以上是关于ES6-----声明变量的主要内容,如果未能解决你的问题,请参考以下文章