关于let,var,const的一些总结

1.变量提升

console.log('a:',  a)
var a=3
console.log('b:', b)
let b=3

以上代码,var变量会被提升,经编译器编译之后的代码如下

var a
console.log('a:',  a)
a=3
console.log('b:', b)
let b=3

很多人说js是解释性语言,其实是编译后从上到下执行;
执行结果如下

image.png

结论:var会变量提升,let不会变量提升

2.let的作用域

function Test(param){
  console.log(param)
  let a = 'outer'
  if(param == 3){
    let a = 'inner'
    console.log(a)
  }
 console.log(a)
}
Test(1)
Test(3)

以上的代码,Test作用域定义了一个a,if作用域定义了一个a,执行之后,结果如下

image.png

假如代码改成如下

function Test(param){
  console.log(param)
  let a = 'outer'
  if(param == 3){
    let a = 'inner'
    console.log(a)
  }
  let a = 'reSet'
 console.log(a)
}
Test(1)

结果如下

image.png

结论:不同作用域可以重复定义变量,同一作用域不能重复定义变量

3.const注意事项

大多数情况下,let和const有相同的准则,只不过const定义的变量是不可变的,但是这是针对简单数据类型(数字,字符串和bool变量),如果是复杂类型,虽然定义了const,但是依然可以改变,

const arr1 = []
arr1.push(2)
const obj1 = {}
obj1.name = 'test'

以上代码,都能改变const变量的值
另外还有一个注意点,const的变量必须赋值,不然会报错

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容