es6基础总结01之let,var,count的理解

317 阅读2分钟

前言

总结下js的基础知识点,以帮助自己的及别人的回顾

let,count,var的区别

名称 变量是否提升 是否支持重复定义 是否支持修改操作 是否暂时性死区 是否支持块级作用域 是否属于全局对象的属性
var
let
count 否(不支持,当声明后,是不允许修改的,底层带有指针部分内容)

变量是否提升

var a=1 // undefined
b //b is not defined
let b
c;// c is not defined
const c //Uncaught SyntaxError: Unexpected identifier

是否支持重复定义

x=1
var x=2
let x =3  //Identifier 'x' has already been declaredat <anonymous>
const x //Uncaught SyntaxError: Unexpected identifier

是否支持修改操作

let x=1
x=3 // 3
var x=1
x=3 // 3
const x5=45
x5=45676 // Assignment to constant variable.

是否暂时性死区

当进入当前作用域中,所使用的变量就已存在了,是无法获取到的,只有在专题变量那一行代码出现后,才能正确的获取的使用当前该变量
  typeof a    // a is not defined
    let a = 'a'
    
    typeof b    // b is not defined
    const b = 'b'
    
    typeof c    // "undefined"
    var c = 'c'
除了以上的情况外,还有以下情况也属性不能进行重复声明的
函数中
function func(arg){
let arg //SyntaxError: Identifier 'arg' has already been declared
}

是否支持块级作用域

除了以上的情况外,还有以下情况也属性不能进行块级作用域的
function func1(){
let a1;
let a1=2 // Identifier 'a1' has already been declared
}
除了以上的情况外,只有在es5中存在全局作用域和函数作用域,但没有 块级作用域的情况

是否属于全局对象的属性

var a1=2
window.a1 //2

let a2=3
window.a2 // undefined

const  a3=4
window.a3 //undefined 

除了以上的情况外,除了var所声明的变量带有全局对象的属性外,let &count均没有全局对象的属性

参考

来源

链接: ECMAScript 6 入门的let 和 const 命令 .

小结

本文主要介绍了let、const与var定义变量的区别以及优点。感谢阅读,如有问题,欢迎指正。

最后

下次见!!!!