==
1.string,number,boolean 转成number比较
2.引用类型与基本类型比较
首先会调用对象的valueOf()方法,期待返回一个基本类型的值(测试为若返回Boolean、Number、String、null、undefined或没有返回值,则将不会继续调用toString方法),若返回的仍然是一个复合对象的话,则调用其toString()方法,若仍然没有返回上述基本类型的话,则直接判为不相等。
>,<
1.有一个为number => number
2.有一个操作数是布尔值 => number
3.有引用类型
调用该对象的valueOf方法,用返回的结果用前面的规则比较,若没有valueOf方法,则调用toString方法
valueOf
与 toString
1.对象为Sting, 优先调用toString
2.对象为number,优先调用valueOf
优先级:valueOf > toString
~
-1的取反操作等于0
var str = '123456'
if(~str.indexOf(0)) return // 如果不包含0,返回
~~: 是按位取反的意思,可以用来强制转int, 向下取整
&
- 偶数 & 1 = 0
- 奇数 & 1 = 1
new操作符
new操作符干了以下三步:
- 先创建了一个新的空对象
- 然后让这个空对象的__proto__指向函数的原型prototype
- 将对象作为函数的this传进去, 或者如果return 出来东西是对象的话就直接返回 return 的内容,没有的话就返回创建的这个对象
function Person1(name){
this.name = name;
}
function Person2(name){
this.name = name;
return this.name;
}
function Person3(name){
this.name = name;
return new String(name);
}
function Person4 (name){
this.name = name;
return function () {
}
}
function Person5(name){
this.name = name;
return new Array();
}
const person1 = new Person1("yuer");//Person1 {name: "yuer"}
const person2 = new Person2("yuer");//Person2 {name: "yuer"}
const person3 = new Person3("yuer");//String {0: "y", 1: "u", 2: "e", 3: "r", length: 4, [[PrimitiveValue]]: "yuer"}
const person4 = new Person4("yuer");//function() {}
const person5 = new Person5("yuer");//[]
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。