美文网首页
javascript中var,let,const的区别用法

javascript中var,let,const的区别用法

作者: xiao_xie_shen | 来源:发表于2019-01-03 15:38 被阅读0次

查找了资料和参考了一些大神的总结,我也总结一下记个笔记。

1.var

var相比let就是管的比较宽,他的值可以被内部修改。

function tests(){
    var n = 1;
    if (true) {
        var n = 2;
    }
    console.log(n); //值被函数内部修改,输出2
}
tests();


if(1){
    var a = 100;
}
console.log( a );//输出100,因为var没有块级作用域,这里a会成为全局变量

2.let

let是es6中新增定义,带有块级作用域,只会在所定义块生效。

function test(){
    let n = 1;
    if (true) {
        let n = 2;
    }
    console.log(n); //值不会被修改,输出1
}
test();


if(1){
    let b = 100;
}
console.log( b );//错误 ReferenceError: b is not defined
//因为let的块级作用域,所以b变量只存在与if内部

let 和 const 存在“变量死区”,这点也是和 var 不同的地方。

3.const

const用来定义常量(可以是字符串,数组,函数,对象等),并且初始值不可为空,但他并不是不可更改的。举个栗子:

const c;//会产生报错.
const d = 1;//正确

const arr = [1, 2];
arr.push(1);//正确 [1, 2, 1]
arr[0] = 3;//正确 [3, 2, 1]

arr = [];//错误TypeError: invalid assignment to const `arr'

可见,如果有需要,可以改变const里所存储的值,但它的指向空间是无法操作的。

4.有趣的面试例子

面试的时候很经常遇到一个例子:

for (var i = 0; i < 5; i++) {
    setTimeout(function() {
        console.log(i);
    }, 1000);
}
//这个例子执行完输出什么结果?

//答案是 5,5,5,5,5

//如果想要输出0,1,2,3,4改怎么实现?
//其中一种方案就是把var换成let就可以了。let的块级作用域在这里就体现出来了。

for (let i = 0; i < 5; i++) {
    setTimeout(function() {
        console.log(i);
    }, 1000);
}

--------------------------------------------------------------笔记结束了!!!

相关文章

  • JS中var、let、const区别

    在javascript中有三种声明变量的方式:var let const。let var const的区别?var...

  • js中const,var,let区别

    在javascript中有三种声明变量的方式:var let const。let var const的区别?var...

  • JavaScript中的var、let、const

    JavaScript中定义变量常量的方法有var、let、const,区别如下: var:作用域是函数体内,存在变...

  • TypeScript基础-变量声明

    使用let替代var JavaScript中变量声明方式有:let var const。TypeScript中推荐...

  • var、let、const

    JavaScript中的变量声明目前有三种:var、let、const。let和const是JavaScript里...

  • javascript中var,let,const的区别用法

    查找了资料和参考了一些大神的总结,我也总结一下记个笔记。 1.var var相比let就是管的比较宽,他的值可以被...

  • Js问答

    JavaScript中var、let、const区别? 使用var声明的变量,其作用域为该语句所在的函数内,且存在...

  • Android菜鸟学习js笔记 一

    一、var,const,let区别? var 变量,const 常量,let块级变量。

  • es6

    1、let 和const(定义变量) (1)var 、let 、const的区别 a、作用域区别var 变量声明会...

  • JavaScript中var,let,const的区别

    实际开发中声明变量我们可以使用 var,let 和 const,不正确的使用它们会带来很多不必要的麻烦,今天就让我...

网友评论

      本文标题:javascript中var,let,const的区别用法

      本文链接:https://www.haomeiwen.com/subject/cjofrqtx.html