let与const
var
- 变量提升
- 重复声明
- 没有块级作用域
let
- 块级作用域
- 可改变值
- 不能重复声明
const
- 块级作用域
- 常量
- 值的引用
-
Object.freeze()
阻止数据改变。
当一个对象被冻结的时候,你不能再对它的属性再进行增、删、改的操作。任何试图改变对象的操作都会被阻止,却不会报错。
例子:let obj = {
name:"FreeCodeCamp",
review:"Awesome"
};
Object.freeze(obj);
obj.review = "bad"; // obj 对象被冻结了,这个操作会被忽略
obj.newProp = "Test"; // 也会被忽略,不允许数据改变
console.log(obj);
// { name: "FreeCodeCamp", review:"Awesome"}
箭头函数
写匿名函数的方式的语法糖
//原本用匿名函数
const myFunc = function() {
const myVar = "value";
return myVar;
}
//箭头函数
const myFunc = () => {
const myVar = "value";
return myVar;
}
注意:当不需要函数体,只返回一个值的时候,箭头函数允许你省略return关键字和外面的大括号。这样就可以将一个简单的函数简化成一个单行语句。
例子:const myFunc= () => "value"
传默认参数
例子:
function greeting(name = "Anonymous") {
return "Hello " + name;
}
console.log(greeting("John")); // Hello John
console.log(greeting()); // Hello Anonymous
…运算符
当…为扩展运算符时,pread操作符主要用于数组构造和解构,在调用时将数组填入函数参数
例子:
function foo(x,y,z) {
console.log(x,y,z);
}
let arr = [1,2,3];
foo(...arr); // 1 2 3
- 当…为rest运算符时,rest操作符主要用于获得传递给函数的参数列表
例子:
function foo(...args) {
console.log(args);
}
foo( 1, 2, 3, 4, 5); // [1, 2, 3, 4, 5]
解构赋值
对象解构赋值
例子:
//ES5
var voxel = {x: 3.6, y: 7.4, z: 6.54 };
var x = voxel.x; // x = 3.6
var y = voxel.y; // y = 7.4
var z = voxel.z; // z = 6.54
//ES6
const { x, y, z } = voxel; // x = 3.6, y = 7.4, z = 6.54