1. JavaScript 基础
1.1 真值和假值
数值类型 | 转换成布尔值 |
---|---|
undefined | false |
null |
false |
布尔值 | true是true,false是false |
数字 | +0、-0和NaN都是false,其他都是true |
字符串 | 如果字符串长度为0就是false,否则是true |
对象 | true |
1.2 相等和全等操作符
1.2.1 相等操作符 ==
如果是相同类型,则比较值,否则其他不在下表中的情况都返回 false。
类型(x == y) | 结果 |
---|---|
null == undefined | true |
字符串 == 数字 | toNumber(y) == x |
布尔值 == 任何类型 | toNumber(x) == y |
对象 == 字符串或数字 | toPrimitive(x) == y |
1.2.2 全等操作符 ===
类型不同都是false,类型相同则比较值或者是否引用同一对象,除了 NaN !== NaN。
1.3 控制语句
if…else switch while do…while for
注意 swtich 的值和 case 是采用全等 === 进行比较;do…while 至少会让循环体中的代码执行一次
1.4 JavaScript 面向对象编程
JavaScript 里的对象就是普通名值对的集合,后面创建的所有的类,如 Stack、Set、LinkedList、Dictionary、Tree、Graph 等,都是 JavaScript 对象。
1.5 ES6 的新功能
var、let、模板字符串、箭头函数、函数的参数默认值、声明展开和剩余参数,Set、Map、WeakSet、WeakMap、Symbol 等等。
数组解构进行值的交换:[x, y] = [y, x]。
1.5.1 使用类进行面向对象编程
function Book(title, pages) {
this.title = title;
this.pages = pages;
}
Book.prototype.printTitle = function() {
console.log(this.title);
};
使用 ES6 Class 进行简化:
class Book {
constructor(title, pages) {
this.title = title;
this.pages = pages;
}
printTtile() {
console.log(this.title);
}
}
继承:
使用 extends 关键字扩展一个类并继承它的行为,在构造函数中,通过 super 关键字引用父类的构造函数。
当然,JS 中的面向对象编程是基于原型实现的,并不是真的和 Java、C++ 一样。
class ITBook extends Book {
constructor(title, pages, technology) {
super(title, pages);
this.technology;
}
printTechnology() {
console.log(this.technology);
}
}
let jsBook = new ITBook('学习js算法', '200', 'JavaScript');