var,let和const的区别

var,let和const的区别

在介绍之前,先了解一下全局作用域和局部作用域

// 在函数外定义一个变量,在当前页面任意处都可调用,为全局变量
var name = 'wython';
function myFunc(){
	//这里可以调用name
}
// 这里也可以调用name

// 在函数内声明的变量,只能在函数内使用,为局部变量

function myFunc(){
    var name = 'wython';
	//这里可以调用name
}
// 这里调用不了name

声明变量let

//let声明的变量值在let命令所在的代码块内有效
{ var x=2; } //大括号外面也可以调用 x
{ let x=2; }//大括号外面调用不了 x

// 所以我们如果想在局部使用而不改变全局可以这么写
var i = 5;
for (let i = 0,i<10;i++){
	// 逻辑代码
} // 输出全局的i 还是5

let 和 var 的相同点和不同点

// 相同点:
在函数内部使用都是局部变量,只能在函数内使用
在函数外部定义,都是全局变量

//不同点:
但是全局定义的时候var可以使用window访问,let定义的不行
var 关键字可以先使用再声明
let 关键字必须先声明才能使用

// 注意:
在相同的作用域下,不能使用let关键字来重置var定义的变量
var x = 2;
var x = 3;
// 会报错。

声明变量const

// const声明一个或多个常量,声明时必须进行初始化,且常量值就不能改变
    const PI = 3.141592653589793;
    PI = 3.14; //报错
// const和let相同点
二者都是块级作用域
都不能和它所在作用域内的其他变量或函数同名
// const和let不同点
const声明的常量必须初始化,而let不用
const定义常量的值不能通过再赋值修改,也不能再次声明,let可以

const的本质

//const定义的常量并非不可改变
// 创建常量对象
const car = {type:"Fiat",color:"bule"};
const dog = ['wangwang','write','3']
// 修改属性
car.color = "red";
dog[0] = 'wang';
// 添加属性
car.model = "500";
dog.push('wangcai')

// 但是都不能重新赋值

全部评论

相关推荐

头像
不愿透露姓名的神秘牛友
03-13 14:57
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务