JavaScript学习的第十五天

es5和es6

es5

严格模式

声明严格模式

'use strict'

使用严格模式要记住的几点

  1. 不可以省略var声明变量
"use strict"
n = 123
console.log(n)
  1. 进制函数使用this关键字指向全局变量
function fn(){
	console.log(this);
}
  1. 禁止使用八进制方法

  2. 不允许在非函数的代码块内声明函数

不知道是不是对的,我运行的时候是可以的

if(true){
    function fn(){
    	console.log('hello');
    }
    fn()
}
  1. 严格模式下,arguments变量,形参是不会变(不同步)
function fn(a){
    'use strict';
    arguments[0]=34;
    var a = 12//未定这个则输出a为23
    console.log(a);//12
    console.log(arguments[0])//34
}
fn(23)

this的bind绑定

this的指向的改变 es5的bind

格式
对象.函数.bind(要绑定的对象)
例子
var user = {
	username:'张三'
}
function hello(){
	console.log(this);//指向user
}
hello.bind(user)()
//bind将这个函数绑定给一个对象 那么这个函数里面的this就会指向对应的对象
//函数对象.bind(绑定的对象)()
var obj = {
	print:function(){
		console.log(this.username);
	}
}
obj.print.bind(user)()//一般绑定的this都是函数里面的 bind绑定对象 一般常用于定时器
setInterval(obj.print.bind(user),1000)

es5的数组高阶函数

es5判断数组的方法Array.isArray() 静态方法 返回值是布尔类型
var arr = ['a','b','c','d']
        console.log(Array.isArray(arr))
什么是高阶函数 以函数作为参数的函数叫做高阶函数

es5关于数组的高阶函数
forEach map filter reduce reduceRight every some

forEach 遍历的函数 没有返回值

第一个value表示值 第二个index表示下标 第三个array表示数组

arr.forEach(function(value,index,array){

​      console.log(value);

​      console.log(index);

​      console.log(array);

​      value = value+value //value是只读属性

​      console.log(value);

​      array[index] = value+value

​      console.log(array[index]);})
map遍历的函数 有返回值 返回数组 数组的长度和我们原本的数组长度一致
 var newArr = arr.map(function(value,index,array){if(value != 'a'){return value+value

​      }})

​    console.log(newArr.length);

​    console.log(arr);

​    console.log(newArr);// filter 过滤 返回值为数组 里面指定是一个functionvar arrs = [1,2,3,4,5]var newArr = arrs.filter(function(value,index,array){if(value>3){return value

​      }})

​    console.log(newArr);var strArr = ['abcdde','abc','efg','abc123','cab']//过滤掉 包含abc的var strArr1 = strArr.filter(function(v,i,a){if(!/abc/.test(v)){return v

​      }})

​    console.log(strArr);
reduce 计算方法 计算总和 (从左到右算)
    var arrs = [1,2,3,4]// currentValue从2开始的var sum = arrs.reduce(function(preValue,currentValue,currentIndex,array){return preValue+currentValue

​    })

​    console.log(sum);
reduceRight 计算方法 (从右到左)

var arrs = ['a','b','c']var total = arrs.reduceRight(function(preValue,currentValue,currentIndex,array){return preValue+currentValue

​    })

​    console.log(total);
every 遍历每一个是否都符合条件 返回布尔类型 都符合条件返回true 有一个不符合就返回false 类似&&
    var str = [1,2,3,4]var isTrue = str.every(function(v,i,a){if(v>0){return v

​      }})

​    console.log(isTrue);
some 遍历每一个查看是否有符合 返回布尔类型 有一个符合的都返回true 类似||
    var str = [1,2,3,4,5]var isTrue = str.some(function(v,i,a){if(v>4){return v

​      }})

​    console.log(isTrue);

es5新增的其他内容

针对日期 新增方法 now() 静态方法 获取当前日期离1970年1月1日0时0分0秒的毫秒值(时间戳)之前使用的是getTime()但是太长了 现在这个now()简单的常用
    var n = Date.now()

​    console.log(n);
字符串模板
    var str = `${n}hello`
对于对象来说提供get及set
    var user = {

​      username:'张三',

​      name:{get name(){return this.user.name

​        },set name(username){this.username = username

​        }}}

​    console.log(user.name);//获取name属性 默认执行get方法

​    user.name = '李四' //设置name属性 默认执行set方法
babel.js文件专门解析es6变成es3

es6

es6介绍

​ ECMAScript第六个版本 是在es5之上做了功能添加

// 变量命名
    // var 命名的是为全局作用域 var 命名可以重复var a = 1var a = 2//这个i会走到5for(var i=0;i<10;i++){

​      document.getElementById('btn').onclick=function(){

​        console.log(i)}}// 使用let i只会走到4for(let i=0;i<10;i++){

​      document.getElementById('btn').onclick=function(){

​        console.log(i)}}

​    console.log(i)//这个i的作用域仅仅存在于for块中 外面不能访问// let关键词 不能重复命名(同一作用域的情况 不同作用域是可以的)// let a = 10// let a = 20//var 可以声明全局变量// const关键词 声明常量 不能变的量 使用const修饰的不能二次赋值 不能重复命名const a = 10 //不会局部声明 一般都在全局声明// a = 20 不允许二次赋值// 箭头函数 箭头函数没有thisfunction fn(){ //普通函数}
箭头函数
    // var fn = (参数)=>{//   函数代码块// }//(参数)=>{代码块} //如果只有一个参数可以省略() 只有一句代码执行的话 可以省略{}var fn = name=>console.log(name+'你在干嘛');//调用fn('刘德华')

​    document.getElementById('btn').onclick = function(){

​      console.log(this); //里面的this会指向对应的按钮}

​    document.getElementById('btn1').onclick =()=>{ //如果需要提供效率 建议使用的

​      console.log(this);//箭头函数里面的this全部是上面的this}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值