1
==比较,它会自动转换数据类型再比较,很多时候,会得到非常诡异的结果;
===比较,它不会自动转换数据类型,如果数据类型不一致,返回false,如果一致,再比较
由于JavaScript这个设计缺陷,不要使用==比较,始终坚持使用===比较。
2
JavaScript不区分整数和浮点数,统一用Number表示
3
NaN这个特殊的Number与所有其他值都不相等,包括它自己
4
''表示长度为0的字符串,而null表示“空”。
5
JavaScript的设计者希望用null表示一个空的值,而undefined表示值未定义。事实证明,这并没有什么卵用,区分两者的意义不大。大多数情况下,我们都应该用null
6
JavaScript的数组可以包括任意数据类型
7
同一个变量可以反复赋值,而且可以是不同类型的变量,但是要注意只能用var申明一次.
var a = 123; // a的值是整数123
a = 'ABC'; // a变为字符串
这种变量本身类型不固定的语言称之为动态语言
8
如果一个变量没有通过var申明就被使用,那么该变量就自动被申明为全局变量:
9
使用var申明的变量则不是全局变量,它的范围被限制在该变量被申明的函数体内(函数的概念将稍后讲解),同名变量在不同的函数体内互不冲突。
10
在strict模式下运行的JavaScript代码,强制通过var申明变量,未使用var申明变量就使用的,将导致运行错误。
启用strict模式的方法是在JavaScript代码的第一行写上:
'use strict';
11
需要特别注意的是,字符串是不可变的,如果对字符串的某个索引赋值,不会有任何错误,但是,也没有任何效果
12
slice()
就是对应String的substring()
版本,它截取Array
的部分元素,然后返回一个新的Array
:
13
push()
向Array
的末尾添加若干元素,pop()
则把Array
的最后一个元素删除掉:
14
如果要往Array
的头部添加若干元素,使用unshift()
方法,shift()
方法则把Array
的第一个元素删掉:
15
sort()
可以对当前Array
进行排序,它会直接修改当前Array
的元素位置,直接调用时,按照默认顺序排序:
16
reverse()
把整个Array
的元素给掉个个,也就是反转:
17
splice()
方法是修改Array
的“万能方法”,它可以从指定的索引开始删除若干元素,然后再从该位置添加若干元素:
18
concat()
方法把当前的Array
和另一个Array
连接起来,并返回一个新的Array
19
请注意,concat()方法并没有修改当前Array,而是返回了一个新的Array。
实际上,concat()方法可以接收任意个元素和Array,并且自动把Array拆开,然后全部添加到新的Array里:
var arr= ['A','B','C'];
arr.concat(1,2, [3,4]);// ['A', 'B', 'C', 1, 2, 3, 4]
20
join()方法是一个非常实用的方法,它把当前Array的每个元素都用指定的字符串连接起来,然后返回连接后的字符串:
var arr= ['A','B','C',1,2,3];
arr.join('-');// 'A-B-C-1-2-3'
如果Array的元素不是字符串,将自动转换为字符串后再连接。
21
由于JavaScript的对象是动态类型,你可以自由地给一个对象添加或删除属性:
22
如果in
判断一个属性存在,这个属性不一定是xiaoming
的,它可能是xiaoming
继承得到的:
23
Map
是一组键值对的结构,具有极快的查找速度
24
Set
和Map
类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在Set
中,没有重复的key
25
Map
和Set
是ES6标准新增的数据类型,请根据浏览器的支持情况决定是否要使用。
26
遍历Array
可以采用下标循环,遍历Map
和Set
就无法使用下标。为了统一集合类型,ES6标准引入了新的iterable
类型,Array
、Map
和Set
都属于iterable
类型。
27
具有iterable
类型的集合可以通过新的for ... of
循环来遍历。
28
更好的方式是直接使用iterable内置的forEach方法,它接收一个函数,每次迭代就自动回调该函数。以Array为例:
var a =['A','B','C'];
a.forEach(function (element, index, array) {
// element:指向当前元素的值
// index:指向当前索引
// array:指向Array对象本身
alert(element);
});
注意,forEach()方法是ES5.1标准引入的,你需要测试浏览器是否支持。
Set与Array类似,但Set没有索引,因此回调函数的前两个参数都是元素本身:
var s =new Set(['A','B','C']);
s.forEach(function (element, sameElement, set) {
alert(element);
});
Map的回调函数参数依次为value、key和map本身:
var m =new Map([[1,'x'], [2,'y'], [3,'z']]);
m.forEach(function (value, key, map) {
alert(value);
});
如果对某些参数不感兴趣,由于JavaScript的函数调用不要求参数必须一致,因此可以忽略它们。例如,只需要获得Array的element:
var a =['A','B','C'];
a.forEach(function (element) {
alert(element);
});