目录
1.不使用新变量的情况下交换两个变量的值
- a.异或运算
var a = 10,b = 99;
a^=b,b^=a,a^=b;
console.log(a); // 99
console.log(b); // 10
- b.数组解构(Es6)
let a = 10,b = 99;
[a,b] = [b,a];
console.log(a); // 99
console.log(b); // 10
2.一个数字与自身的取反值相加等于 -1
console.log(~ -3) // 2
3.最快的取整方式
console.log(~~2.9) // 2
4.数组去重(Es6)
new Set([arr])
5.使用 console.table() 来进行调试
const a = 5, b = 6, c = 7
console.log({ a, b, c});
console.table({a, b, c, m: {name: ‘csdn’, age: 30}});
6.寻找数组中的最大值
const max = (arr) => Math.max(…arr);
max([123, 1234, 321]) // 1234
7.计算数组的总和
const sum = (arr) => arr.reduce((a, b) => (a + b), 0)
sum([1, 2, 3, 4]) //10
8.数组拼接
const arr1 = [1, 2];
const arr2 = [3, 4];
const arr3 = [5, 6];
const arr = […arr1, …arr2, …arr3]
console.log(arr)
9.观察者模式
"事件"完全可以理解成"信号",如果存在一个"信号中心",某个任务执行完成,就向信号中心"发布"(publish)一个信号,其他任务可以向信号中心"订阅"
(subscribe)这个信号,从而知道什么时候自己可以开始执行.这就叫做"发布/订阅模式"(publish-subscribe pattern),又称"观察者模式"(obse
rver pattern)。
这个模式有多种实现,下面采用的是Ben Alman的Tiny Pub/Sub,这是jQuery的一个插件。首先,f2向”信号中心”jQuery订阅”done”信号。
jQuery.subscribe("done", f2);
然后,f1进行如下改写:
function f1(){
setTimeout(function () {
// f1的任务代码
jQuery.publish("done");
}, 1000);
}
jQuery.publish(“done”)的意思是,f1执行完成后,向”信号中心”jQuery发布”done”信号,从而引发f2的执行。
f2完成执行后,也可以取消订阅(unsubscribe)。
jQuery.unsubscribe("done", f2);
这种方法的性质与”事件监听”类似,但是明显优于后者。因为我们可以通过查看”消息中心”,了解存在多少信号、每个信号有多少订阅者,从而监控程序的运行。