1. javascript中的array, set, map
均为数据容器,使用iterable
内置的forEach
方法
var a = ['A', 'B', 'C'];
a.forEach(function (element, index, array) {
// element: 指向当前元素的值
// index: 指向当前索引
// array: 指向Array对象本身
alert(element);
});
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);
});
2. if (type === 'number') { value = +value; }
3. this.setState({ [field]: value });
(1) Uncaught ReferenceError: b is not defined ===> b变量未定义
(2) var b
undefined ===> 变量定义但未被赋值
(3) 变量提升
javascript引擎先获取所有变量再依次执行代码
console.log(a); var a = 1;
等价于
var a; console.log(a); a = 1;
输出undefined
(4) 条件判断 - 一个case
var x = 1; var y = 2; if (x = y) { console.log(x); } // "2"
误将==或者===写成赋值运算符=,则x=2并为true的逻辑,所以输出值2
为避免这样的情形,可以写成 if(2 === x)
(5) switch与case的比较,采用严格相等的方式,即===
(6) https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript
(7) https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop