1.let和const命令
(1)let与var
var声明的变量全局有效,而let在块级作用域中有效
所以在for循环中用let打印本轮循环的结果,而var打印的是全局结果
let不存在变量提升,所以没有声明的情况下使用会报错,而var会报undefined
let不允许在相同作用域内,重复声明同一个变量,因此,不能在函数内部重新声明参数
(2)const
const声明的变量不得改变值,这意味着,const一旦声明变量,就必须立即初始化,不能留到以后赋值
const实际上保证的并不是变量的值不得改动,而是变量指向的那个内存地址所保存的数据不得改动。
也就是说对于一个对象,我们可以改变它的属性,不能改变它的指向。
2.解构赋值
(1)解构赋值:数组、对象、字符串、数值、布尔值、函数参数
(2)用途
交换变量的值
函数中返回多个值
函数参数的定义
提取json格式的数据
let jsonData = {id: 42,status: "OK",data: [867, 5309]
};let { id, status, data: number } = jsonData;
函数参数设置默认值
遍历map结构,获得键值
const map = new Map();
map.set('first', 'hello');
map.set('second', 'world');for (let [key, value] of map) {console.log(key + " is " + value);
}
3.字符串的扩展
字符串的Unicode写法:`\u{xxxx}`
模板字符串:'${变量}'
function authorize(user, action) {if (!user.hasPrivilege(action)) {throw new Error(// 传统写法为// 'User '// + user.name// + ' is not authorized to do '// + action// + '.'`User ${user.name} is not authorized to do ${action}.`);}
}
4.字符串的新增方法
String.fromCodePoint(Unicode码);
String.raw()