探索 var 和 let 关键字之间的差异 1 2 3 4 5 6 7 8 9 10 let catName;let quote;function catTalk ( ) { "use strict" ; catName = "Oliver" ; quote = catName + " says Meow!" ; } catTalk();
比较 var 和 let 关键字的作用域 1 2 3 4 5 6 7 8 9 function checkScope ( ) { let i = 'function scope' ; if (true ) { let i = 'block scope' ; console .log('Block scope i is: ' , i); } console .log('Function scope i is: ' , i); return i; }
用 const 关键字声明只读变量 function printManyTimes(str) {
1 2 3 4 5 6 7 8 9 10 11 const SENTENCE = str + " is cool!" ; for (let i = 0 ; i < str.length; i+=2 ) { console .log(SENTENCE); } } printManyTimes("freeCodeCamp" );
改变一个用 const 声明的数组 对象(包括数组和函数)在使用 const 声明的时候依然是可变的。 使用 const 来声明只会保证变量不会被重新赋值。
1 2 3 4 5 6 const s = [5 , 6 , 7 ];s = [1 , 2 , 3 ]; s[2 ] = 45 ; console .log(s);
1 2 3 4 5 6 7 8 9 10 11 const s = [5 , 7 , 2 ];function editInPlace ( ) { s[0 ] = 2 ; s[1 ] = 5 ; s[2 ] = 7 ; } editInPlace();
防止对象改变 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 function freezeObj ( ) { const MATH_CONSTANTS = { PI : 3.14 }; Object .freeze(MATH_CONSTANTS) try { MATH_CONSTANTS.PI = 99 ; } catch (ex) { console .log(ex); } return MATH_CONSTANTS.PI; } const PI = freezeObj();
使用箭头函数编写简洁的匿名函数 语法:
1 2 3 4 const myFunc = function ( ) { const myVar = "value" ; return myVar; }
1 2 3 4 5 const myFunc = () => { const myVar = "value" ; return myVar; }
1 const myFunc = () => "value" ;
1 const magic = () => new Date ();
编写带参数的箭头函数 1 2 3 const myConcat = (arr1, arr2 ) => arr1.concat(arr2);console .log(myConcat([1 , 2 ], [3 , 4 , 5 ]));
设置函数的默认参数 1 2 3 const increment = (number, value=1 ) => number + value;
将 rest 操作符与函数参数一起使用 1 2 3 const sum = (...args ) => { return args.reduce((a, b ) => a + b, 0 ); }
使用 spread 运算符展开数组项