var,let ,const 的区别

1.var :体现在变量和函数表达式方面:
1)会发生预解析,函数的优先级高于变量,故而,函数可以提前调用。
2)声明的变量会被后面同一作用域中的同名变量所覆盖掉.
3)属于函数体作用域

 //实例一: 
 console.log(a);
a();
var a=1;
function a(){
	console.log("helllo");
}; 
console.log(a);
a();
/*上述代码的解析过程是:
var a;
function a(){...};
console.log(a)//结果是function a(){...};
a()//结果是hello
a=1;
console.log(a);//1
a();//会报错,此时a不再是一个函数


//实例二
var m="hello";
function f(n){
  console.log(n);
  function n(){};
  console.log(n);
  var n="world";
  console.log(n);
};
f(m);
/*上述函数的预解析过程是:
var m;
function f(){...};
f(m);
//下面设计f(m)函数中的预解析过程
var n;
n="hello"//函数作用域内会优先使用形参进行赋值
function n(){...};
console.log(n);//结果是function n(){...}
console.log(n);//结果同上
n="world";
console.log(n);//world;
*/

2.let 该关键字用于声明变量
属于块级作用域的范畴
不存在变量提升
同一个作用域内,不能重复声明

实例一:
console.log(a);
let a="hello";
//结果是:
//Uncaught ReferenceError: a is not define


//---------------
var a="hello";
let a="world";
//会报错:Identifier 'c' has already been declared


//--------------------
let a="hello";
var a="world";
//会报错:Identifier 'c' has already been declared

实例二:
for(var i=0;i<3;i++){
  setTimeout(function(){console.log(i)},1000);
}
console.log(i);
//结果 3,
//因为这里声明的i相当于一个全局变量,会经历var i=0;var i=1;var i=2;var i=3;最终的i结果是3

for(let i=0;i<3;i++){
  setTimeout(function(){console.log(i);},1000);
}
console.log(i);//该变量i未声明,i is not defined
//结果是
/*
i is not defined
0
1
2
*/
/*
  在for循环中let i每一次循环都会重新声明变量,且每次声明的变量都只会在当前的这个块级作用域内起作用
*/

3.const:用于声明一个常量或者是地址不变的值,声明时需要同时赋值。
同一个作用域内,不能重复声明

实例一:
var a=1;
const a=2;
//报错:Identifier 'a' has already been declared


//------------------------------------------------


const m=1;
var m="oo";
//报错Identifier 'm' has already been declared




实例二:
const obj={};
obj.name="tom";
obj.skill="eat";
console.log(obj);
// {name: "tom", skill: "eat"}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值