• js中const,var,let区别


    ES2015(ES6) 新增加了两个重要的 JavaScript 关键字: let 和 const

    let 声明的变量只在 let 命令所在的代码块内有效。

    const 声明一个只读的常量,一旦声明,常量的值就不能改变。

    在 ES6 之前,JavaScript 只有两种作用域: 全局变量 与 函数内的局部变量

    1.const 声明一个只读的常量,一旦声明,常量的值就不能改变。

    conset的主要作用:

    (1)可以定义const常量,具有不可变性。
      例如:const int Max=100; Max++会产生错误;
    (2)便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患。
      例如: void f(const int i) { .........} 编译器就会知道i是一个常量,不允许修改;
    (3)可以避免意义模糊的数字出现,同样可以很方便地进行参数的调整和修改。 同宏定义一样,可以做到不变则已,一变都变!
      如(1)中,如果想修改Max的内容,只需要它修改成:const int Max=you want;即可!
    (4)可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。 还是上面的例子,如果在函数体内修改了i,编译器就会报错;
      例如: void f(const int i) { i=10;//error! }
    (5) 可以节省空间,避免不必要的内存分配。 例如:
      #define PI 3.14159 //常量宏
      const double Pi=3.14159; //此时并未将Pi放入ROM中 ......
      double i=Pi; //此时为Pi分配内存,以后不再分配!
      double I=PI; //编译期间进行宏替换,分配内存
      double j=Pi; //没有内存分配
      double J=PI; //再进行宏替换,又一次分配内存!
      const定义常量从汇编的角度来看,只是给出了对应的内存地址,而不是像#define一样给出的是立即数,所以,const定义的常量在程序运行过程中只有一份拷贝,而#define定义的常量在内存中有若干份拷贝。
    (6) 提高了效率。
      编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。
    1 const b = 2;//正确
    2 // const b;//错误,必须初始化 
    3 console.log('函数外const定义b:' + b);//有输出值
    4 // b = 5;
    5 // console.log('函数外修改const定义b:' + b);//无法输出 

    2.var定义的变量可以修改,如果不初始化会输出undefined,不会报错。

    1 var a = 1;
    2 // var a;//不会报错
    3 console.log('函数外var定义a:' + a);//可以输出a=1
    4 function change(){
    5 a = 4;
    6 console.log('函数内var定义a:' + a);//可以输出a=4
    7 } 
    8 change();
    9 console.log('函数调用后var定义a为函数内部修改值:' + a);//可以输出a=4

    3.let是块级作用域,函数内部使用let定义后,对函数外部无影响。

    1 let c = 3;
    2 console.log('函数外let定义c:' + c);//输出c=3
    3 function change(){
    4 let c = 6;
    5 console.log('函数内let定义c:' + c);//输出c=6
    6 } 
    7 change();
    8 console.log('函数调用后let定义c不受函数内部定义影响:' + c);//输出c=3
  • 相关阅读:
    C# 连接 Socks5 代理
    使用EF Core 连接远程oracle 不需要安装oracle客户端方法
    PLSQL Developer 12 汉化包下载
    对象异步赋值bug记录
    图片缩放
    根据对象的属性去重,获取新数组
    小程序购物车抛物线(贝塞尔曲线实现)
    文字溢出,换行方法整理
    整理一些最近开发小程序的经验
    【莫傷曉_开发笔记】linux java绘图字体乱码问题
  • 原文地址:https://www.cnblogs.com/SallyShan/p/11530783.html
Copyright © 2020-2023  润新知