模板字符串:
用(``)反引号可以实现换行操作,并且可以通过${变量}往里面加入变量
let str = "14433223";
let ul = `<li><div>
${str}
</div></li>`
document.write(ul)
箭头函数:
其实就是函数的简化版,箭头函数没有this,当在箭头函数里面使用this时,可以理解为window.this
let add = function(a,b){
return a+b
}
console.log(add(1,4));
// 等价于
let add1 = (a,b) => a+b;
console.log(add1(1,4));
// 当箭头函数的形参只有一个时,可以省略括号不写,当函数的执行语句只有一句时,花括号也可以不写,如果不加花括号,代表return
let str = a => console.log(a)
str('144223')
var声明的是全局变量,可以用window.变量名获得 let声明的不能
箭头函数没有this
var name = "张三";
let xiaoming = {
name:"小明",
age:18,
say:function(){
console.log("我是"+this.name)
},
say1:() =>{
console.log("我是"+this.name)
}
}
xiaoming.say()//我是小明
xiaoming.say1()//我是张三
此外,箭头函数也没有arguments,arguments是指函数中所有形式参数
// 箭头函数没有arguments
let n = function(a,b,c){
console.log(arguments)
};
n(1,2,3);
let n1 = (a,b,c) => {
console.log(arguments);
};
n1(3,2,1);//报错。因为箭头函数没有arguments
字符串的扩展:
padStart和padEnd,他们分别是在另一个字符串的前面(后面)插入字符串,是字符串达到要求
//padStart 在字符串前面插入字符串,使字符串达到要求的长度
//padEnd 在字符串后面插入字符串,使字符串达到要求的长度
let str = 'i';
let str1 = 'love';
let str2 = 'U';
console.log(str.padStart(3,str1));//loi 3是指要达到的长度
console.log(str.padStart(3,str2));//UUi
console.log(str.padEnd(3,str2));//iUU
console.log(str.padEnd(3,str1));//ilo
字符串的startWith和endsStart用来判断字符串是否以某个字符串开头(结尾)
字符串的includes 判断字符串中是否包含某个字或字符串
let str = "apple";
console.log(str.startsWith('ap'));//true
console.log(str.startsWith('le'));//false
console.log(str.endsWith('e'));//true
console.log(str.endsWith('ple'));//true
// //includes 包含
console.log(str.includes('o'));//flase
console.log(str.includes('app'));//true
console.log(str.includes('b'));//flase
数组的扩展:
Array.from()可以把类数组转换为数组,类数组有个条件,就是必须有length键,且length键的数值绝对类数组转换为数组的长度
Array.from可以把类数组转换为数组
let obj = {
0:1,
1:2,
2:5,
length:3//length是转换为数组的长度
}
console.log(obj);
console.log(Array.from(obj))
创建新数组的方法:(除了简便方法):
Array.from可以把类数组转换为数组
let obj = {
0:1,
1:2,
2:5,
length:3//length是转换为数组的长度
}
console.log(obj);
console.log(Array.from(obj))
// fill是以特定的内容去填充某个数组
// arr.fill('456',1,3)//要填充的内容 开始填充的位置,结束的位置
// console.log(arr);
// // includes
// let arr = [1,2,3,45,6];
// console.log(arr.includes(45));
// console.log(arr.includes(4));
// console.log(arr.includes([1]));
// // keys 获得数组所有的键
// for (let i of arr.keys()) {
// console.log(i);
// }
// console.log("==");
// // values 获得数组所有的值
// for (let i of arr.values()) {
// console.log(i);
// }
// // entries
// for (let i of arr.entries()) {
// console.log(i)//获得的i是一个数组,一个键对应一个值的数组
// }
// find与findIndex
//find 找到满足条件的第一条数据。条件写在return里面,find函数自身有三个参数,值,值对应的键,还有数组本身
// let arr = [9,8,7,5,6,4];
// let res = arr.find(function(v,k,arr){//value key arr
// console.log(v,k)
// // console.log(arr)
// return k%2//偶数
// })
// console.log(res)
// // findIndex 找到满足条件的第一条数据的下标。条件写在return里面,find函数自身有三个参数,值,值对应的键,还有数组本身
// let res1 = arr.findIndex(function(v,k,arr){//value key arr
// console.log(v,k)
// // console.log(arr)
// return k%2//偶数
// })
// console.log(res1)
// map 将数组都进行某种运算,然后返回新数组
// let arr = [1,2,3,4];
// let res = arr.map((item)=>item*2);
// console.log(res);
// // some 数组中有满足条件的就返回true
// let res1 = arr.some((item) =>item>2);
// console.log(res1);
// // every 数组中的所有值都要满足条件,才能返回true,否则返回false
// let res2 = arr.every((item) =>item>0);
// console.log(res2);
// // filter 过滤出满足条件的元素,并组成一个新数组
// let res3 = arr.filter((item) => item>2)
// console.log(res3)
//数值类型
// parseInt parseFloat
// console.log(window.parseInt(1.23));
// console.log(window.parseFloat(1.110));
// console.log(Number.parseFloat(1.235));
// console.log(Number.parseInt(1.235));
// //isNaN 判断是不是NaN isfinite 判断是不是数值类型
// console.log(Number.isNaN('aaa'*1))//true
// console.log(Number.isNaN(123))//false
// console.log(Number.isFinite(1/3))//true
// console.log(Number.isFinite('aaa'))//false
// Number.isSafeInteger 判断一个数字是否在2^53-1——-2^53-1
// console.log(Number.isSafeInteger(2**53))
// console.log(Number.isSafeInteger(2**53-1))
// let num = 2**10**5**0;//运算从右到左
// console.log(num)