javascript点滴积累

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

 
原文地址:https://www.cnblogs.com/hello-yz/p/8531601.html