js中var let const三个关键字的理解

js中var let const三个关键字的理解

        看到别人在变量前用的let const有点懵,怎么和我用的var不一样呢?难得是我out了?网上查了一下相关的资料,整理一下,方便记忆,也不知道是不是老了,记忆力有点下降。

        let const是ES2015引入的新关键词,这两个关键字在JavaScript中提供了块作用域(Block Scope)变量(和常量)。之前我只知道全局作用域和函数作用域。话不多说,我们分别来看一下这三个关键字有什么作用和哪些区别。

var:

var是用来声明变量的.

1.如果在全局中声明,则为全局变量,它的作用域范围是全局环境。

var names = "貂蝉";
function two(){
    console.log(names);//可以用
}
two();
console.log(names);//可以用。

2.如果在方法中声明变量,则为局部变量,也只能够在当前函数内部使用。

function one(){
var name="小红";
    console.log(name);//这里可以用,打印出 小红。
}	
one();//记得调用,不调用不会执行。
console.log(name);//这里访问不到name

3.如果我们在声明变量时忘记加var 关键字,那它就属于全局属性,通过作用域链一层一层往上找。

function three(){
    age=20;
    console.log(age)//这里会打印出20
}
three();
console.log(age)//这里会打印出20 访问到three() 中的变量了。

let:

1.let是块级作用域 声明的变量只在let所在的代码块可以使用(也就是这个{}括号里,括号外的都使用不了)。

{
    var a=10;
}
console.log(a);//这里可以打印出 10

{
    let b=20;
}
console.log(b)//这里会报错 b is not defined

2.使用var关键字重新声明变量会带来一些问题,在块中重新声明变量会改变块外的。而使用let声明就可以很好的解决这个问题。

var a = "aaa";
{
    var a= 10;//在这里重新声明变量只是想让它在这个块儿内使用,不想改变块外的变量。
}
console.log(a)//这里的a 变成 10

var b = "bbb";
{
    let b = 20;
    console.log(b)//打印出20
}
console.log(b)//打印出 bbb,块外的变量没有被改变。

3.在一个块级作用域内,let不能重复定义.

{
    let a =10;
    let a =20;//会报错
}

4.不存在变量声明提前,变量需要先声明再使用。

{
    console.log(a);
    let a = 10;//会报错
}

5.let 循环作用域。

var i=10;
for(var i=0;i<5;i++){
    //我们只是想让i在这个循环中使用,而不影响循环体外的变量i。
}
console.log(i)//这里输出的是5.

var i=10;
for(let i=0;i<5;i++){
    //现在循环体内的i不会好外面的全局变量发生冲突了。
}
console.log(i)//这里输出的是10

6.在函数体内用var let声明变量相似,都是局部变量。

7.在函数体外或代码块外使用 var 和 let 关键字声明的变量也有点类似,它们的作用域都是全局的。

const:

用于声明一个或多个常量(一旦赋值,不可以改变),声明时必须进行初始化,且初始化后值不可再修改。也是块级作用域,命名使用大写字母,不允许重复定义,不存在变量声明提前,也是先声明再使用。

const NUM = 20;
NUM = 20;//会报错

//声明时必须要初始化
const NUM;
NUM = 20;//错误写法

const NUM = 20;//正确

以上是我整理的关于var let const 这三个关键字的理解,有哪里不对的希望各路大神帮忙指正。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值