Javascript中的弊端
变量Var:
1.可以重复声明
2.无法限制修改
3.没有块级作用域,作用域是函数
let/const
1.不能重复申明
2.let是变量,可以修改,const是常量,不能修改
箭头函数:
function show(){} 等价于这种写法 let show=() =>{}
function (){}
等价于:
一个简单的数组问题:
let arr=[12,3,5,1,7];
arr.sort(function(n1,n2){
return n1-n2;
})
/*arr.sort();*/
arr.sort((n1,n2)=>{
return n1-n2;
})
alert(arr);
参数问题
1参数拓展/展开
2.展开数组
展开后的效果,跟直接把数组的内容写在这儿一样
function show(a,b,...args){//三个... 后面的参数名可以随意取,参数名是一个数组
alert(a);
alert(b);
alert(args);
}
show(12,4,3,45,6,7)
数组展开:
默认参数(后可以覆盖
解构赋值
ex:
let [a,b,c]=[12,5,8]
let {a,b,c}={a:12,b:5,c:8}
数组:
map 映射 (一一对应)
[12,67,54]
[不及格,及格,不及格]
reduce 汇总 (一堆出来一个):
算个总数/平均数
let arr=[23,54,89];
let result=arr.reduce(function(tmp,item,index){
return tmp+item;
})
alert(result);//计算总数
let arr=[23,54,89];
let result=arr.reduce(function(tmp,item,index){
//return tmp+item;
if(index!=arr.length-1){
return tmp+item;
}
else{
return (tmp+item)/arr.length;
}
})
alert(result);//计算平均数
filter(过滤器)
通过boolean值决定是否保留
let arr=[3,54,99,7];
let result=arr.filter(item=>{
if(item%2==0)
return true;
else
return false;
})
alert(result);
化简:
forEach(循环)迭代
字符串
startsWith(以什么开头的,比如:startsWith(http://))/endsWith(以什么开头的,比如:endsWith(.jpg))
直接把东西塞到字符串里面 $(东西),可以折行
let a=12;
let str=`a${a}bc`;//将12加入字符串中
alert(str);
面向对象
老版的面向对象:
function User(name,pass){
this.name=name;
this.pass=pass;
}
User.prototype.showName=function(){
alert(this.name);
}
User.prototype.showPass=function(){
alert(this.pass);
}
var u1=new User(‘yuan23‘,‘123456‘);
u1.showName();
u1.showPass();
新出的面向对象:1.class关键字,构造器和类分开了 2.class里面直接加方法
class User{
constructor(name,pass){
this.name=name;
this.pass=pass;
}
showName(){
alert(this.name);
}
showPass(){
alert(this.pass);
}
}
var u1=new User(‘yuan23‘,‘123456‘);
u1.showName();
u1.showPass();
继承:
原文:https://www.cnblogs.com/yuan233/p/10329062.html