1. ES6标准引入了新的关键字const来定义常量,const与let都具有块级作用域。
2. 数组的map()、reduce()、filter()这三个函数都是返回新的数组,而不改变原先的数组。
map 函数的作用:对数组中的每一个值进行map()中的function(x)操作。
reduce 函数的作用: [x1, x2, x3, x4].reduce(f) = f(f(f(x1, x2), x3), x4)
filter 函数的作用:filter()把传入的函数依次作用于每个元素,然后根据返回值是true还是false决定保留还是丢弃该元素。
3. sort()函数注意是作用在数组本身上的,不是新建一个新的数组,它改变了数组自身。
4. ES6标准新增了一种新的函数:Arrow Function(箭头函数)
为什么叫Arrow Function?因为它的定义用的就是一个箭头:
x => x * x
上面的箭头函数相当于:
function (x) {
return x * x;
}
注意:使用箭头函数在函数内部会使得this的调用针对函数内部,this不会再指向Windows或者是undefined
5. typeof可以判断数值的具体类型
number、string、boolean、function和undefined有别于其他类型。特别注意null的类型是object,Array的类型也是object,如果我们用typeof将无法区分出null、Array和通常意义上的object——{}。
6.记住以下规则:
-
不要使用
new Number()、new Boolean()、new String()创建包装对象; -
用
parseInt()或parseFloat()来转换任意类型到number; -
用
String()来转换任意类型到string,或者直接调用某个对象的toString()方法; -
通常不必把任意类型转换为
boolean再判断,因为可以直接写if (myVar) {...}; -
typeof操作符可以判断出number、boolean、string、function和undefined; -
判断
Array要使用Array.isArray(arr); -
判断
null请使用myVar === null; -
判断某个全局变量是否存在用
typeof window.myVar === 'undefined'; -
函数内部判断某个变量是否存在用
typeof myVar === 'undefined'。
任何对象都有toString()方法吗?null和undefined就没有!确实如此,这两个特殊值要除外,虽然null还伪装成了object类型。
注意:number对象调用toString()报SyntaxError:
123.toString(); // SyntaxError
遇到这种情况,要特殊处理一下:
123..toString(); // '123', 注意是两个点! (123).toString(); // '123'
7. JavaScript的月份范围用整数表示是0~11,0表示一月,1表示二月……,很坑爹,,可是现在只能这么用了