红宝书阅读笔记!第一天_声明变量

185 阅读1分钟

声明风格及最佳实现

ECMA6新增加了const和let,两个新关键字的出现,新的有助于提升代码质量的最佳实现也逐渐显现。

不使用var,const优先,let次之。

var声明

var声明作用域:函数的局部变量

var声明提升

  function foo(){
      console.log(age);
      age = 26;
  }   

=>

function foo(){
	`age = 26;`
    console.log(age);
}

let声明_推荐在声明循环中使用

let声明作用域:块作用域

1、暂时性死区

let声明的对象不会像var声明的变量在作用域中被提升。

2、全局声明

let在全局作用域中生命的变量不会成为window对象的属性

3、条件声明

由于let声明的作用域为块作用域,所以不能通过条件来声明let的变量,或者try、catch、typeof等关键词

try{
	console.log(age);	//如果age没有被声明过,则会报错
    }
catch(error){
	let age;
    }
    //age 被限制在catch{}块的作用域内
    //因此这个赋值是全局赋值
    age = 26;

const声明_声明对象

const声明的变量不允许被修改,并且声明的作用域也是块,但是如果const变量引用的是一个对象,那么修改这个对象内部的属性并不违反const的限制。
文章内容参考:JavaScript高级程序设计(第四版)

标题、背景来自:juejin.cn/post/684490…