JS中声明变量关键字var,let和count的区别

var,let,const关键字

定义:给一个变量在内存当中开辟一个空间。

1.var关键字
  • var声明的范围是函数作用域,let和const声明的范围是块作用域
  • var 声明的变量会被提升到函数作用域的顶部,let 和 const 声明的变量不存在提升,且具有暂时性死区特征
  • var 允许在同一个作用域中重复声明同一个变量,let 和 const 不允许
  • 在全局作用域中使用 var 声明的变量会成为 window 对象的属性,let 和 const 声明的变量则不会
var的预解析
        // 提前调用 预解析
        console.log( int1 );
        // // 提前调用 结果是报错
        console.log( int2 );
 
        // var 定义的变量 
        var int1 = 100 ;
        let int2 = 200 ;
作用域

var没有块级作用域,而let声明的范围是块作用域(在{}里就代表一个块级作用域)

if (true) {
    var message = "hello";
    console.log(message); // hello
}
console.log(message); // hello
 
 
if (true) {
    let message = "hello";
    console.log(message); // hello
}
console.log(message); // 报错: message is not defined
let
  • let定义的变量不能预解析,提前调用的结果是报错。
  • let定义的变量不能重复,否则执行报错。
  • let定义的变量如果在{}中只能在{}中调用。
  • 在循环语句中var定义的循环变量和使用let定义的循环变量。执行原理和执行效果不同。

let,count不允许一个块作用域中出现冗余声明

if (true) { 
    // error: 无法重新声明块范围变量“a”
    let a;
    let a;
count
  • const定义的变量不能预解析,提前调用的结果是报错。
  • const定义的变量不能重复,否则执行报错。
  • const 定义的变量存储的数据数值不能改变,也就是const定义的变量,不能重复赋值。

count定义的变量不能重复复制,一般用来定义常量

        // const 定义的变量 不能重复赋值
        // const c = 100 ;
        // c = 200 ;
        // 结果是报错
 
        const arr = [1,2,3,4,5] ;
        // 只是修改引用数据类型中,数据单元存储的数据
        // 没有修改 arr变量中 存储的引用数据类型的内存地址
        arr[0] = '北京' ;
        console.log( arr );
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容