ES5
es5严格模式
“use strict”; 声明严格模式
n = 123 console.log(n); //这个里面会直接报错 采用了严格模式后对应的内容 需要更加规范 不支持八进制 //eslint 代码检查器 //怪异模式 n = 123 console.log(n);
1、不可以省略var声明变量
"use strict"; //声明严格模式 n = 123 //报错 console.log(n);
2、禁止函数使用this关键字指向全局变量
<body> <div id="box" onclick="handlerClick()">111
div> <script> function handlerClick(){
console.log(this); //打印undefined }
script>
body>
3、禁止使用八进制方法
4、不允许在非函数的代码块内声明函数
5、严格模式下,arguments变量,形参是不会变(不同步)
es5的数组高阶函数
什么是高阶函数 以函数作为参数的函数叫做高阶函数
es5数组的方法 静态方法
var arr = ['a','b','c','d'] console.log(Array.isArray(arr)); //判断是否是一个数组 返回为布尔类型的值
es5关于数组的高阶函数
forEach 遍历的函数 没有返回值
arr.forEach(function(value,index,array){
//第一个value表示值 第二个index表示下标 第三个array表示你遍历的数组 console.log(value); console.log(index); console.log(array); //value = value+value //value是只读属性 array[index] = value+value })
map遍历的函数 有返回值 //返回数组 数组的长度和我们原本的数组长度一致
var newArr = arr.map(function(value,index,array){
if(value!='a'){
//当a的时候不返回 a位置的结果 undefined return value+value } }) console.log(newArr.length); console.log(arr); console.log(newArr);
filter 过滤 返回值为数组里面指定是一个function
var arrs = [10,15,12,13,11] //过滤掉12以下的数据 var newArr = arrs.filter(function(value,index,array){
if(value>=12){
return value } }) console.log(newArr); var strArr = ["abcdde",'abc','efg','abc123','cab'] //过滤掉 里面包含abc var strArr1 = strArr.filter(function(v,i,arr){
if(!/abc/.test(v)){
return v } }) var strArr2 = strArr.filter(function(v,i,arr){
if(i%2==0){
return v } }) console.log(strArr1); console.log(strArr2);
reduce 计算方法 计算总和(从左到右)
var arrs = [1,2,3,4] //上一个值 当值 当前下标 遍历的数组 var sum = arrs.reduce(function(preValue,currentValue,currentIndex,arr){
return preValue+currentValue }) console.log(sum);
reduceRigth 计算方法(从右到左)
var count = arrs.reduceRight(function(preValue,currentValue,currentIndex,arr){
return preValue+currentValue }) console.log(count); var strArr3 = ['A','B','C'] var str1 = strArr3.reduce(function(preValue,currentValue,currentIndex,arr){
return preValue+currentValue }) var str2 = strArr3.reduceRight(function(preValue,currentValue,currentIndex,arr){
return preValue+currentValue }) console.log(str1); console.log(str2);
every 遍历每一个是否都符合条件 返回布尔类型的值 都符合条件返回true 有一个不符合返回false
var numberArr = [1,20,15,30] var isTrue = numberArr.every(function(v,i,arr){
return v<30 }) console.log(isTrue);
some 是否存在符合条件的 有一个就返回true 都没有返回false
var numberArr = [1,20,15,30] var isTrue = numberArr.some(function(v,i,arr){
return v<0 }) console.log(isTrue);
针对日期 新增方法 now() 静态方法 获取当前日期离1970年1月1日0时0分0秒的毫秒值(时间戳)
var n = Date.now() //这个使用多 console.log(n);
字符串模板
var str = `${
n}hello`
对于对象来说提供get及set
var user = {
username:'张三', name:{
get name(){
//获取会自动调用 return this.username }, set name(username){
//设置会自动调用 this.username = username } } } console.log(user.name);//获取name属性 默认执行get方法 user.name = '李四' //设置name属性 默认执行set方法
this指向的改变 es5的bind
var user = {
username:'张三' } function hello(){
console.log(this); //指向user } //bind将这个函数绑定给一个对象 那么这个函数里面的this就会指向对应的对象 //函数对象.bind(绑定的对象)() hello.bind(user)() var obj = {
print:function(){
console.log(this.username); } } obj.print.bind(user)() //一般我们绑定的this都是函数里面的 bind绑定对象 一般常用于定时器 setInterval(obj.print.bind(user),2000)
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/222101.html原文链接:https://javaforall.net
