let
var和let声明变量的区别:
1 2 3 4
| if(true){ let a=0; } console.log(a);
|
会出现Uncaught ReferenceError: a is not defined
的报错,而在{}内打印console.log(a)而不会报错。
1 2
| console.log(a); let a=0;
|
如上代码会报错Uncaught ReferenceError: Cannot access 'a' before initialization
在{}外用var声明变量,{}内用let声明一个相同的变量,{}外用var声明的变量便没有意义。
1 2 3 4 5
| var a=10; if(true){ console.log(a); let a=20; }
|
如上代码依旧会报错Uncaught ReferenceError: Cannot access 'a' before initialization
const
1 2 3 4
| if (true) { const a = 10; } console.log(a)
|
未初始化会报错Uncaught SyntaxError: Missing initializer in const declaration
- 常量赋值后,简单数据类型值不能修改,复杂数据类型地址不能更改。
1 2 3 4
| const a = []; a.push('Hello'); a.length = 0; a = ['Dave'];
|
解构赋值
数组结构
1 2 3 4
| let [a,b,c]=[1,2,3]; console.log(a); console.log(b); console.log(c);
|
对象结构
1 2 3 4 5 6 7
| let obj={ name:'panghu', age:20 }; let {name,age}=obj; console.log(name); console.log(age);
|
箭头函数=>
1 2 3 4 5
| const sum=(n1,n2)=>{ n1+n2; } const result=sum(10,20); console.log(result);
|
当键头后的{}内只有一个表达式,可去掉{};当()里的参数只有一个,可去掉()。
1 2 3
| const al=v=>alert(v) const result=al(20) console.log(result);
|
剩余参数
1 2 3 4 5
| sum=(a,...b)=>{ console.log(a); console.log(b); } sum(3,4,5);
|
1 2 3 4
| let students = ['胖虎', '张三', '李四']; let [s1, ...s2] = students; console.log(s1); console.log(s2);
|