文档章节

ES5

wytao1995
 wytao1995
发布于 09/21 06:18
字数 763
阅读 9
收藏 0

 什么是ES5:比普通js运行要求更加严格的模式

为什么:js语言本身有很多广受诟病的缺陷

如何:在当前作用域的顶部添加:"use strict"

要求:

1、禁止给未声明的变量赋值

2、静默失败升级为错误

    静默失败:执行不成功,也不报错!

3、禁用了 arguments.calee

    arguments.callee:在调用时,获得当前正在执行函数名,因为递归的效率极低--重复计算量太大

    解决:几乎所有的递归都可以用循环代替

4、普通函数调用和匿名函数自调中的this不再指向window,而是underfine

 

二、替换this

1、临时调用一次函数,并临时替换一次this

函数在window下,而对象是临时创建的对象,属于Object顶层类的实例,无法调用函数的时候,用以下方法,将实例变为window下对象,进行调用方法

(1)、call():函数参数为单个参数

function calc(base,bonus1,bonus2) {
            document.write(`<h1>${this.ename}的总工资是${base+bonus1+bonus2}</h1>`)
        }
        var li={
            ename:'li'
        }
        calc.call(li,3000,4000,5000);

(2)、apply():函数参数为数组,底层为将数组拆分为单个参数,再调用call

function calc(base,bonus1,bonus2) {
            document.write(`<h1>${this.ename}的总工资是${base+bonus1+bonus2}</h1>`)
        }
        var hmm={
            ename:'hmm'
        }
        calc.apply(hmm,[6000,7000,8000])

2、bind()

功能:将函数绑定到对象上

参数:参数1:绑定的对象,参数2,函数的数值的一部分(将函数参数拆分为两部分,一部分在bind()中,一部分在返回值调用时)

返回值:新的方法的引用

function calc(base,bonus1,bonus2) {
            document.write(`<h1>${this.ename}的总工资是${base+bonus1+bonus2}</h1>`)
        }
        var li={
            ename:'li'
        }
        var lcalc=calc.bind(li,1000);
        lcalc(2000,3000)

 

三、数组API

1、indexOf(),同字符串中的indexOf(),查找数组元素时使用

2、every(callback(value,index,arr){})

var arr = [2,4,6,8];
        document.write(`${arr.every(function (value,index,arr){
            return (value%2==0)
        })}`)

3、some(callback(value,index,arr){})

4、遍历:对数组中每个元素执行相同操作

    (1)foreach()遍历原数组中每个元素,执行相同的参数

var a=[1,2,3,4,5]
        a.forEach(function (value,index,arr) {
            arr[index]*=2;
        })
        document.write(`${a},`)

    (2)map()依次取出原数组中每个元素,执行相同的操作后,放入新数组中返回

var a=[1,2,3,4,5]
        var b=a.map(function (value,index,arr) {
            return value*=2;
        })
        document.write(`${typeof (b)},${b}`)

5、过滤和汇总

    过滤:复制出数组中符合条件的元素,组成新数组返回

var a=[1,2,3,4,5]
        var events=a.filter(function (value,index,arr) {
            return value%2==0
        })
        document.write(`${typeof (events)},${events}`)

    汇总:对数组中每个元素的值进行统计,得出一个汇总的结果,就是求和相似需求

    参数:回调函数,初始值

var a=[1,2,3,4,5]
        var sum=a.reduce(function (res,value,index,arr) {
           return res+value;
        },10)
        document.write(`${typeof (sum)},${sum}`)

 

© 著作权归作者所有

上一篇: ES6
下一篇: JS--function
wytao1995
粉丝 1
博文 53
码字总数 33926
作品 0
六安
私信 提问
[译] You Might Not Use ES6

原文作者:Addy Osmani 原文链接: es6-equivalents-in-es5 译者:snow 喜欢理由:帮助我们更好的了解 ES6 语法 语法目录 箭头函数 块级作用域 模板字符串 计算属性 解构赋值 默认参数 Iter...

snowLu
01/15
0
0
linux 环境下 angular2 生成component 报错 ELOOP:too many symbolic links encountered, stat

adaptercat@debian :/project/angular/AngularTest/src/app$ ng generate component t Error: ELOOP: too many symbolic links encountered, stat '/project/angular/AngularTest/node_modul......

adaptercat
2017/10/10
486
1
从ES5语法到ES6语法你应该知道这些

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m366917/article/details/63267297 从ES5语法到ES6语法你应该知道这些 最近在学RN,所以就要先来了解一下现在...

Aduroidpc
2017/03/18
0
0
ES5和ES6中的继承 图解

Javascript中的继承一直是个比较麻烦的问题,prototype、constructor、proto在构造函数,实例和原型之间有的 复杂的关系,不仔细捋下很难记得牢固。ES6中又新增了class和extends,和ES5搅在一...

钱天兵
2016/06/21
0
0
ES6 与 ES5 继承的区别

ES6 中有类 class 的概念,类 class 的继承是通过 extends 来实现的,ES5 中是通过设置构造函数的 prototype 属性,来实现继承的,ES6 与 ES5 的继承有什么区别呢?下面通过 3 个 demo,来分...

奔跑吧_兄弟
08/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

关于PHP处理Json数据的例子

本文转载于:专业的前端网站➜关于PHP处理Json数据的例子 最近工作需要在原来静态看板(大屏)页面的基础上,实现数据的动态展示,而且需要定时刷新。 接到任务后就马不停蹄的开始修改页面: ...

前端老手
10分钟前
2
0
Archiva 不小心删掉了管理员权限怎么办

Archiva 的界面和 UI 比较容易出问题。 在添加用户和为用户进行权限修改的时候,不小心连 admin 这个用户的权限都删掉了。 这个时候应该如何恢复 admin 这个用户的权限? 这个时候你可以尝试...

honeymoose
今天
7
0
Java8新特性之空指针异常的克星Optional类

Java8新特性系列我们已经介绍了Stream、Lambda表达式、DateTime日期时间处理,最后以“NullPointerException” 的克星Optional类的讲解来收尾。 背景 作为开发人员每天与NullPointerExceptio...

程序新视界
今天
5
0
OSChina 周四乱弹 —— 福布斯终身秃头奖

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享如是我闻的单曲《地藏经上卷》: 如是我闻#今日歌曲推荐# 《地藏经上卷》- 如是我闻 手机党少年们想听歌,请使劲儿戳(这里) ...

小小编辑
今天
640
12
Mybatis Plus删除

/** @author beth @data 2019-10-17 00:30 */ @RunWith(SpringRunner.class) @SpringBootTest public class DeleteTest { @Autowired private UserInfoMapper userInfoMapper; /** 根据id删除......

一个yuanbeth
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部