ES6学习之- let 和 const 命令

£神魔★判官ぃ 2022-01-28 06:11 359阅读 0赞

仅做个人学习交流

参考文章:http://es6.ruanyifeng.com

前提:

let 和 const 都是 ES6 中声明变量的方法。 ES6中声明变量的方法有6种:var 、function 、let、const 、class 、import 。

let 和 const 声明的变量都是局部变量。只在块级区域生效。

块级区域:

  1. 1、“\{......\}”符号进行声明的区域;
  2. 2、循环函数内部区域;

块级区域的作用:

  1. 1、防止区域数据的泄露到全局变量中;
  2. 2、防止内层变量污染外层变量;
  3. 3、注意:ES5 中块级区域声明的函数将会被提升至顶部,所以为了确保最终的效果,建议使用声明函数表达式,少用函数声明式;
  4. // 块级作用域内部的函数声明语句,建议不要使用
  5. {
  6. let a = 'secret';
  7. function f() {
  8. return a;
  9. }
  10. }
  11. // 块级作用域内部,优先使用函数表达式
  12. {
  13. let a = 'secret';
  14. let f = function () {
  15. return a;
  16. };
  17. }

let:

  1. 1 let 是用来声明变量的,他的使用方法和 var 类似,都是可以通过“=”进行赋值的。不同的是 var 声明的是一个全局变量,而 let 声明的变量只在块级区域有效;
  2. 2let 不可以重复声明同一个名称的变量;
  3. 3、声明变量之前不可以进行使用;(区别于 var var 声明变量前使用会得到一个 undefined 的结果,而 let 类型的变量则会报错);
  4. 4let 声明一个 var 同名的变量时,let 的优先级更高(在块级区域内);

const:

  1. 1const 是用来声明一个常量的,常量值是不可以修改的;
  2. 2const 声明的常量是一个块级常量;
  3. 3const 声明的变量值是通过指针指向特定的内存地址,也就是说如果指向的是一个对象,其内存地址不变的情况下,属性的变化是可以的(如果想要锁定一个对象,需要用到 freeze(object) 方法进行冻结,同时也可以通过 constantize(object\[attr\]) 的方法对属性进行冻结);
  4. var constantize = (obj) => {
  5. // 对 obj 进行冻结,冻结之后 obj 将不能添加新的属性,但是原有属性可以进行修改;
  6. Object.freeze(obj);
  7. // 对 obj 的属性进行冻结,属性值不可修改;
  8. Object.keys(obj).forEach( (key, i) => {
  9. if ( typeof obj[key] === 'object' ) {
  10. constantize( obj[key] );
  11. }
  12. });};

发表评论

表情:
评论列表 (有 0 条评论,359人围观)

还没有评论,来说两句吧...

相关阅读

    相关 es6 let const 命令

    一.let 1.作用域 在javascript中只有全局作用域和函数作用域,并不存在块级作用域。这样,在使用时就会出现一些问题。 下面我们先来举例说明let块级作用