var let const 区别

var定义的变量可以修改,如果不初始化会输出undefined,不会报错。

注意:省略var可以定义全局变量,但是我们不推荐这种能够用法,应为在局部作用域中定义全局变量是很难维护的,而且有意的省略var操作符,也会由于相应的变量不会马上有定义而导致不必要的混乱。

var a = 1;
// var a;//不会报错
console.log('函数外var定义a:' + a);//可以输出a=1
function change(){
a = 4;
console.log('函数内var定义a:' + a);//可以输出a=4
} 
change();
console.log('函数调用后var定义a为函数内部修改值:' + a);//可以输出a=4

let是块级作用域,函数内部使用let定义后,对函数外部无影响。 比较适合于for循环,这样不会造成内存的泄露。

Let 解决的问题:

1为javaScript增加了块级作用域(立即执行函数不在必要了)。

2.用于循环计数,防止了变量泄露

2,内层变量可能会覆盖外层变量。

let c = 3;
console.log('函数外let定义c:' + c);//输出c=3
function change(){
let c = 6;
console.log('函数内let定义c:' + c);//输出c=6
} 
change();
console.log('函数调用后let定义c不受函数内部定义影响:' + c);//输出c=3

const定义的变量不可以修改,而且必须初始化。

 const b = 2;//正确
 // const b;//错误,必须初始化 
 console.log('函数外const定义b:' + b);//有输出值
 // b = 5;
 // console.log('函数外修改const定义b:' + b);//无法输出 

补充;

let是修复了var的作用域的一些bug,变的更加好用。let是更好的var。var的作用于是函数作用于,而let是块级别(大括号括起来的内容)
const声明的变量只可以在声明时赋值,不可随意修改,这是最大的特点。

posted @ 2017-09-27 11:41  模糊的星空  阅读(91)  评论(0)    收藏  举报