function multiply(a=5,b=1){
return a*b;
}
multiply(1); //1
multiply(1,5); //5
multiply(,1); //error
multiply(undifined,1);//1
let age=1,name="张三";
//采用``定义模板字符串,利用${}引用变量/函数
say=`我叫${name},今年${age*5}岁了`;//"我叫张三,今年5岁了"
//双重嵌套版本
`
${
a.map(
thisA=> `${thisA}`
)
}
`
//"999,998,997
"
let name="张三",age="十八岁";
//定义标签函数
function highLight(strings,...argument){
let str="";
let newMap=argument.map(value=>{
return value.big();
});
strings.forEach((value,i)=>{
str+=`${value}${newMap[i]||""}`
})
return str;
}
//调用标签模板字符串
document.body.innerHTML=highLight`${name}今年${age}了`
let aaa=" ?? "
aaa.trim(); //"??"
aaa.trimLeft();" ??"
aaa.trimRight();"?? "
let a=[1,2,3,4];
a.join;//"1,2,3,4"
a.join("/");// "1/2/3/4"
a.join("");// "1234"
document.body.innerHTML="hello
"
const text="This is a text";
//查询开头和结尾是否为某字符串
text.startsWith("This");//true
text.startsWith("this");//false(大小写敏感)
text.endsWith("text");//true(敏感)
//查询是否包含某字符串
text.includes("This");//true(敏感)
//查询第n位之后是否包含某字符串
text.includes("This",10);//false
"哈".repeat(9);//"哈哈哈哈哈哈哈哈哈"
//声明Tom对象
const Tom={
name:"Tom Jone",
age:21,
hobby:{
first:"play",
second:"sleep"
}
}
//解构
let {name,age}=Tom;
console.log(name);//Tom Jone
//解构并重命名
let {first:f,second}=Tom.hobby;
console.log(f);//play
//解构并附默认值
let {first,second,third="其他就没了"}=Tom.hobby;
console.log(third);//其他就没了
//利用对象解构交换变量
[Tom.name,Tom.age]=[Tom.age,Tom.name]
const num=[99,98,97,96,95];
//对象用{},数组用[](数组解构同样支持默认参数)
let [one,two]=num;
console.log(one);//99
console.log(two);//98
//跳过一些
let [,,three]=num;
console.log(three);//97
//剩余参数
let [first,...other]=num;
console.log(other);//[ 98, 97, 96, 95 ]
//Set是一种集合结构,其所存储的值不能重复
let set=new Set();//创建
set.clear();//清空
set.add("666");//新增
set.add("777");
set.add("888");
set.delete("666");//删除
set.has("666");//检索
set.has("777");
//遍历方法
for(item of set){
console.log(item);
}
let a=[1,3,2,4,3,1];
let set=Array.from(new Set(a));
//Map字典结构与Set类似,都不能存储重复值,不同的是,Map存入的是键值对
let map=new Map();
map.set("name","张三");//增
map.set("age",18);
map.set("age","十八");//重复值会覆盖前者
map.delete("age");//删
map.has("name");//查询
map.get("name");//获得值
map.clear();//清空
//遍历方法
for([a,b] of map){
console.log(a,b);
}
let promise=new Promise(function(resolve,reject){
setTimeout(()=>{
console.log("任务执行完成");
resolve();
},3000);
});
promise.then((success)=>{
console.log("ok");
})
class Person{
constructor(name,age){
this.name=name;
this.age=age;
}
say(){
console.log("我的名字是"+this.name);
}
}
class Student extends Person{
constructor(name,age,subject){
super(name,age);
this.subject=subject;
}
teach(){
console.log("我学习"+this.subject)
}
}
//将类数组转化为数组
let a=[1,3,2,4,3,1];
let set=Array.from(new Set(a));
//将字符串转化为数组
let str="hello world";
let newStr=Array.from(str);
let a=[1,2,3];
let b=[3,4,5];
//使用拓展运算符进行连接
console.log([...a,999,...b]);//[ 1, 2, 3, 999, 3, 4, 5 ]
//使用扩展运算符作为参数
let attr=["name","age"];
array.push(...attr);
//基本写法
return Promise(function(resolve,reject){})
//取最先完成
Promise.race([promise1,promise2])//返回先完成的promise对象
//全部完成回调
Promise.all(promise1,promise2])//返回promise对象数组
//直接使用[]拼接字符串或变量
let i='aaa',j='bbb';
let obj={
[i+j]:999,
}
//打印obj为{aaabbb:999}
//导出
export{
varA,varB,funcA
};
//导入
import {varA,varB,funcA} from "xxx.js"