一.一元运算符
优点;代码简洁 ,好看
缺点:可读性差
let num =1
num + +1 //等同于num = num+1 //一元运算符:只用了一个运算
num = num +1
//num -=1
console.log(num);
二.三元运算符
let num = 1
let num2 = 88
//for循环
if (num2>num) {
console.log('今天的天气真好');
} else{
console.log('1233')
}
//三元运算符
num2 >num ?console.log('今天的天气真好'): console.log('1233')
三.定时器
概念:实现定时调用的韩式,可按照指定的周期(以毫秒计算)来调用函数或计算表达式
它会不停的调用函数,知道cleaeInterval被调用或窗口被关闭
格式:tInterval(函数,执行的毫秒数) 每倒计时执行这个毫秒数 再去执行函数的
let num=1 //定义一个变量 赋值为1
setInterval() => { //定时器
num +=1 //每过1s 执行1次 函数的内容
console.log(num);
},1000) //毫秒数
四.延时器
概念:setTimeout用来指定某个函数或者某段代码,在多少秒之后执行,它返回一个整数,表示定时器的编号,以后可以用来取消这个定时器。
console.log('1');
setTimeout('console.log("今天天气不错哈")',6000)
console.log('2')
注意:输出结果会先输出1和2,等5000毫秒后,就会出出现‘今天天气不错’
格式:setTimeout (函数,执行的毫秒数) 等毫秒数倒计时结束后 执行这个函数,永远只执行一次
setTimeout(()=> {
console,log(1);
},2000) //延迟2毫秒,就会出现1
let a=5 //定义一个变量赋值5
console.log(a); //输出这个变量
setTimeout( () =>{
a=10 //修改这个变量a
console.log(a) //2s数车这个变量
},2000);
//简洁的写法
functiom fn (){
console.log('我要执行了')
}
setTimeout (fn,20000);
五.字符串截取的方法
slice:截取的时候,开始下标和结束下标都可以用负数表示
格式 :字符串.slice(开始下标,结束下标)
注意:结束下标不包含本身。开始和结束下标如果截取的一样,截取到的是空字符。
如果第二个参数省略了,默认截取到字符串的末尾
结束标签 -1:末尾
-2:倒数第二个
let str = '今天的天气不好'
let name = str.silce(0,2) //0:从索引0开始 2:从索引第二个开始,不包活
第二个
let toady =str.silce(3,7)
console.log(name,toady);
如果只传第一个参数 默认截取从索引(包括当前索引)截取之后的所有字符串
如果传两个 第二参数(索引之前的/不包括当前索引)
第一个参数索引(包括当前的索引) 第二个参数(索引之前的/不包括当前索引)
//截取最后两位
let text = '啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊'
//如果传入负数那就从负数开始截取
console.log(text.silce(-2);
六.数组的截取方式
格式: 数组.slice(开始的索引,结束的索引) 注意:包前不包后
不改变原始数组
返回值: 以数组的形式返回截取的内容
let arr = [1,2,3,4,5]
let arr2 = arr.slice(0,2) //0,是索引 3是数组的第三个
console.log(arr2)
七.数组的splice
格式:数组.splice(开始的索引, 截取多少个)
直接改变原始数组
返回值: 以数组的形式返回截取出来的内容 (不管截取多少个内容,都是以数组的形式返回)
改变原数组就是 对 数组进行操作后 之前的数组也会发生变化
不改变原数组就是不会对 原数组进行改变
let arr[1,2,3,4,5]
arr.splice(1,2) //第一个参数是索引 第二参数是删除几个
console.log(arr);
//splice也可以在指定的位置上添加
let arr2 =[1,2,4,5]
arr.splice(2,0,3)
console.log(arr2);
// 补充 删除方法 的返回值就是删除的元素
let arr3 = [1,2,3,4,5]
let res = arr3.splice(1,2)
console.log(res,'最后的删除');
八.用new创建对象
function Person (name,age,hobby){
this.name =name
this.age = age
this.hobby = hobby
}
let a1 = new Person ('zz',22,'看书')
console.log(a1);
九.构造函数
也是函数, 实现复用
好处:逻辑复用
为了区分构造函数和普通函数的区别 构造函数的首字母大写
function Person(name,age,hobby) {
this.name = name
this.age = age
this.hobby = hobby
}
let zz = new Person('氷氷',22,'爱学习')
console.log(zz);
十.时间对象
let date = new Date()
let year = date.getFullYear()
let mounth = date.getMonth()+1
let day = date.getDate()
console.log(year,mounth,day);
console.dir(date); // 以对象的形式输出
时间练习:
var date = new Date()
var y = date.getFullYear() // 年
var m = zero(date.getMonth() + 1)
var d = zero(date.getDate())
var time = y + '-' + m + '-' + d
console.log(time);
function zero(num) {
return num<10? '0'+num : num
}
十一.this
this:指向意思 ,默认指向window
函数里面 默认谁指向谁
总结:默认情况下 函数的指向 指向this 一般情况下 谁调用这个函数 this就指向谁
箭头函数 如果是在对象 他指向上层作用域 的this
function fn() {
console.log (this); //默认的
}
//a:1 fn:f 函数谁用它就只指向谁
let obj = {
a:1
fn:function () {
console.log (this) ;
}
obj.fn() //指向obj这个对象
十一:数组转字符串
格式:数组.join(以什么字符链接)
参数可以不写,不写是以 , 链接 不改变原始数组
返回值: 就是用指定字符链接好的字符串(💢注:是字符串)
let arr = [1,2,3,4]
console.log(arr.join(' '));
//如果不想转拼接符
十二.字符串转数组
let str = '12345'
let str = '123-45'
console.log(str.split(' ') );
console.log(str.split('-') );
//默认不传,每个分割 , 如果传了,就从传入的开始分割
十三.数组的过滤
过滤器 就是把满足条件的放到一个 新数组里面
let arr = [1,2,3,4,6,99,5,4,38,77]
let arr1 = []
arr.forEach(item=>{
if(item>50){
arr1.push(item)
}
})
console.log(arr1);
let arr2 = arr.filter((item,index)=>{
return item > 50
})
// 简写
let arr2 = arr.filter(item=> item > 50)
console.log(arr2);