关于声明变量和数组方法

声明变量

关于var let const三者:
var 可以重复声明,存在变量提升,只有两个作用域,全局和局部(函数内),会将声明的变量挂载到window对象上,会引发一系列不可思议的错误,比如var name=1;
局部作用域内,如果没有某变量,则默认会去找外层作用域查找,如果自己这个局部作用域内,如果有let或var或const声明了此变量,则会暂时性死区,会锁定本作用域,不去外面找
我们在全局作用域中或局部作用域中,使用var关键字声明的变量,都会被提升到该作用域的最顶部,这就是我们常说的变量提升

const声明的是常量,常量不可以修改。常量定义必须初始化值,如果不初始化值就会报错。特别注意的一点是const变量不能修改指针,但是可以修改值,比如我们定义一个对象,我们就可以修改对象里的属性值,但是不可以重写整个对象。使用const声明的常量没有var那样的变量提升,const声明的常量只在当前作用域中有效。而let声明的是变量,可以修改。

复制代码
/*  //作用域:传统js只有两个作用域,1是全局,2是局部(函数内)
      console.log(a) //undefined
      var a  //var声明变量存在变量提升,在这里声明的变量,在整个作用域,都存在
      console.log(a)//undefined
      a=1
      console.log(a)//1
      // console.log(b)*/
    /*  var a, b = 2  //a===undefined
      var a, b
      b = 2*/
    /*var name, b = '2'
    console.log(name)
    console.log(typeof name)
    console.log(typeof b)

    console.log(window)*/
    // console.log(name)
    // name=2
    // var window = {
    //     name: 'a',
    //     b: '2'
    // }

    /*
        console.log(a) //error  let没有变量提升
        let a
        console.log(a) //
        a=1
        console.log(a)//
    */

    /*   var a=1
       var a=2
       console.log(a)

       let b=1
       let b=2
       console.log(b) //let 不允许重复声明*/

    /*  var a = 1
      function add() {
          a++
          console.log(a) //2
      }
      add()
      console.log(a) //2*/

    /*   function add() {
           var a = 1
           a++
           console.log(a) //2
       }
       add()
       console.log(a) //error*/

    /* var a=3
     function add() {
         a = 1
         a++
         console.log(a) //2
     }
     add()
     console.log(a) //2*/

    /*  var a=3
      function add() {
         var a = 1
          a++
          console.log(a) //2
      }
      add()
      console.log(a)//3*/

 /*   a = 3
    function add() {
        a++
        console.log(a) //
        var a
        a = 1
        console.log(a) //1
    }

    add()
    console.log(a)//
    */
    /*a = 3
    function add() {
        a++
        console.log(a) //
        let a
        a = 1
        console.log(a) //1
    }

    add()
    console.log(a)//*/

    /*const a=1
    a=2  //const 声明常量,不可被修改*/

    const a=[1,2,3,4,5,6,7,8]
    // a[0]='a'
    // console.log(a)
    const b=[1,2,3,4,5,6,7,8]
    console.log(a===b)

    const c=a
    a[0]='dsafj,nmbm,jk;dsfaklj'
    console.log(c)
    console.log(a===c)

    const d=[]
    for (let i = 0; i < b.length; i++) {
        d[i]=b[i]
    }
    console.log(d,b===d)
复制代码
var 可以重复声明,存在变量提升,只有两个作用域,全局和局部(函数内),会将声明的变量挂载到window对象上,会引发一系列不可思议的错误,比如var name=1;
//局部作用域内,如果没有某变量,则默认会去找外层作用域查找,如果自己这个局部作用域内,如果有let或var或const声明了此变量,则会暂时性死区,会锁定本作用域,不去外面找
posted @   四字碎发  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示