条件判断:javascript把null,undefined,0,NaN和空字符串视为false,其他一概视为true
if(){
}else if(){
}else{
}
循环:
var i = 0;
for (i =0; i < 100; i++){}
for (var key in o) {}
while(){}
do{}while();
Map和Set:
var m = new Map();
vat s = new Set();去重
迭代:
for(...of){} Array,Map,Set
forEach(function(item, index, self){});
函数:函数也是对象
function abs(x){};
var abs = function(x){};匿名函数
arguments函数内部参数
rest参数 function f(a,b,...rest){},只能写到最后,使用...标识
变量提升,扫描函数体,声明函数提升到变量顶部
全局作用域:默认全局对象window,全局作用域的变量被绑到window的一个属性
名字空间:把自己的变量和函数全部绑定到一个全局变量中
局部作用域:var作用域在函数内部,语句块中的(for if等)无法定义具有局部作用域变量,解决块级作用域,使用let替代var
常量:const PI=3.14,const和let都具有块级作用域
解构赋值:同时对一组变量进行赋值
var [x,y,z] = [1,2,3]
var {name, age} = {name:'Bob', age:20}
方法:在一个对象中绑定函数,称为这个对象的方法
this关键字,使用apply方法控制this指针,装饰器
高阶函数:函数的参数是另一个参数map reduce filter sort
Array:exery find findIndex forEach
闭包:函数作为返回值
返回函数不要引用任何循环变量,或后续会发生变化的变量
箭头函数:相当于匿名函数 var f = x => x*x;
生成器:generator yield
标准对象:typeof获取对象类型
包装对象:不使用
Data:表示日期和时间
RegExp:正则表达式
Json:数据格式
面向对象编程:
JavaScript没有class的概念,所有对象都是实例,所谓继承关系不过是把一个对象的原型指向另一个对象而已__proto__原型链指向
创建对象:
构造函数:普通函数+new,变成构造函数,构造函数首字母大写,普通函数首字母小写
function Student(name){}
var xiaoming = new Student("xiaoming")
class继承:ES6
class Student{
constructor(name){
this.name = name;
}
}
class PrimaryStudent extends Student{
constructor(name, grade){
super(name);
this.grade = grade;
}
}