关于声明变量和数组方法
声明变量
关于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声明了此变量,则会暂时性死区,会锁定本作用域,不去外面找
//局部作用域内,如果没有某变量,则默认会去找外层作用域查找,如果自己这个局部作用域内,如果有let或var或const声明了此变量,则会暂时性死区,会锁定本作用域,不去外面找
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!