块级作用域 (避免污染全局变量)
// var
var arr = [1,2,3,4,5];
for (var i = 0; i < arr.length; i++) {
console.log(arr[i]); // 1 2 3 4 5
}
console.log(i); // 5
// let
let arr = [1,2,3,4,5];
let i = 'for循环外的i';
for (let i = 0; i < arr.length; i++) {
console.log(arr[i]); // 1 2 3 4 5
}
console.log(i); // for循环外的i
解构
// 定义变量
let foo = 1, bar = 2, baz = 3; === let [foo, bar, baz] = [11, 2, 3];
// ES6 变量数值交换
let x = 1, y = 2; [x, y] = [y, x]; console.log(x,y); -> // 2 1
// 对象结构
let obj = { x: 1, y: 2, c: 1 }; let { x, y } = obj; console.log(x,y); -> 1 2
// 字符串解构
const [a, b, c, d, e] = 'hello'; console.log(a,b,c,d,e); -> h e l l o
// 函数参数解构
const info = { name: '韩梅梅', age: 18 };
function getAge({ name, age }) {
console.log(`${name}今年${age}岁`)
}
getAge(info)
箭头函数(两种表达式相等, this
对象是定义时所在的对象,而不是使用时所在的对象)
let fun = (v) => {
console.log(v)
};
var fun1 = function (v) {
console.log(v)
}
模板字符串()
// ``定义模板字符串, ${}展示变量
let name = '韩梅梅';
console.log(`我的名字是${name}`);
剩余参数 / 展开语法
let z = { a: 'aa', b: 'bb' };
let n = { ...z };
console.log(n); -> {a: 'aa', b: 'bb'}