| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> 浅学JavaScript08 -> 正文阅读 |
|
[JavaScript知识库]浅学JavaScript08 |
世界不止0和1 还有...目录??????? ????????apply/call/bind? ? ? ? ? ?? 函数进阶????????基础知识????????????????????????函数是将复用的代码块封装起来的模块,在JS中函数还有其他语言所不具有的特性,接下来我们会详细掌握使用技巧。 ? ? ? ? ? ? ? ? 1.声明定义????????????????????????在JS中函数也是对象函数是 ???????????????????????? ????????????????????????标准语法是使用函数声明来定义函数 ???????????????????????? ????????????????????????对象字面量属性函数简写 ????????????????????????? ????????????????????????全局函数会声明在window对象中,这不正确建议使用后面章节的模块处理 ???????????????????????? ????????????????????????当我们定义了? ????????????????????????? ????????????????????????使用 ?????????????????????????? ????????????????2.匿名函数????????????????????????函数是对象所以可以通过赋值来指向到函数对象的指针,当然指针也可以传递给其他变量,注意后面要以 ???????????????????????? ????????????????????????标准声明的函数优先级更高,解析器会优先提取函数并放在代码树顶端,所以标准声明函数位置不限制,所以下面的代码可以正常执行。 ????????????????????????? ????????????????????????标准声明优先级高于赋值声明 ????????????????????????? ????????????????????????程序中使用匿名函数的情况非常普遍 ????????????????????????? ????????????????3.立即执行????????????????????????立即执行函数指函数定义时立即执行 ????????????????????????????????可以用来定义私有作用域防止污染全局作用域 ???????????????????????? ????????????????????????使用? ???????????????????????? ????????????????4.函数提升????????????????????????函数也会提升到前面,优先级行于 ???????????????????????? ????????????????????????变量函数定义不会被提升 ?????????????????????????? ????????????????5.形参实参????????????????????????形参是在函数声明时设置的参数,实参指在调用函数时传递的值。 ????????????????????????????????形参数量大于实参时,没有传参的形参值为 undefined ????????????????????????????????实参数量大于形参时,多于的实参将忽略并不会报错 ???????????????????????????????? ????????????????????????当没传递参数时值为undefined ?????????????????????????? ????????????????6.默认参数????????????????????????下面通过计算年平均销售额来体验以往默认参数的处理方式 ???????????????????????? ????????????????????????使用新版本默认参数方式如下 ????????????????????????? ????????????????????????下面通过排序来体验新版默认参数的处理方式,下例中当不传递 type 参数时使用默认值 asc。 ????????????????????????? ????????????????????????默认参数要放在最后面? ???????????????????????? ????????????????7.函数参数????????????????????????函数可以做为参数传递,这也是大多数语言都支持的语法规则。 ???????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? 函数可以做为参数传递 ???????????????????????? ????????????????8.arguments????????????????????????arguments 是函数获得到所有参数集合,下面是使用? ???????????????????????? ????????????????????????更建议使用展示语法 ?????????????????????????? ????????????????9.箭头函数????????????????????????箭头函数是函数声明的简写形式,在使用递归调用、构造函数、事件处理器时不建议使用箭头函数。 ????????????????????????无参数时使用空扩号即可 ???????????????????????? ????????????????????????函数体为单一表达式时不需要? ????????????????????????? ????????????????????????多参数传递与普通声明函数一样使用逗号分隔 ????????????????????????? ?????????????????????????只有一个参数时可以省略括号???????????????? ????????????????????????? ????????????????10.递归调用????????????????????????递归指函数内部调用自身的方式。 ????????????????????????????????主要用于数量不确定的循环操作 ????????????????????????????????要有退出时机否则会陷入死循环 ????????????????????????下面通过阶乘来体验递归调用 ???????????????????????? ? ? ? ? ? ? ? ? ? ? ? ?累加计算方法 ????????????????????????? ????????????????????????递归打印倒三角
????????????????11.回调函数????????????????????????在某个时刻被其他函数调用的函数称为回调函数,比如处理键盘、鼠标事件的函数。
????????????????????????使用回调函数递增计算 ???????????????????????? ????????????????12.展开语法????????????????????????展示语法或称点语法体现的就是 ???????????????????????? ????????????????????????使用展示语法可以替代? ????????????????????????? ????????????????????????也可以用于接收部分参数 ????????????????????????? ????????????????????????使用? ???????????????????????? ????????????????????????多个参数时 ???????????????????????? ????????????????13.标签函数????????????????????????使用函数来解析标签字符串,第一个参数是字符串值的数组,其余的参数为标签变量。 ???????????????????????? ????????this????????????????1.函数调用????????????????????????全局环境下 ???????????????????????? ????????????????????????使用严格模式时在全局函数内
????????????????2.方法调用????????????????????????函数为对象的方法时 ????????????????????????可以使用多种方式创建对象,下面是使用构造函数创建对象 ????????????????????????构造函数 ????????????????????????函数当被? ????????????????????????????????构造函数主要用来生成对象,里面的this默认就是指当前对象 ????????????????????????????????????????????????对象字面量???????????????????? ????????????????????????????????下例中的hd函数不属于对象方法所以指向 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???show属于对象方法执向? ????????????????????????? ????????????????????????在方法中使用函数时有些函数可以改变this如 ????????????????????????? ????????????????????????也可以在父作用域中定义引用 ????????????????????????? ????????????????3.箭头函数????????????????????????箭头函数没有 ????????????????????????????????如果想使用函数定义时的上下文中的this,那就使用箭头函数 ????????????????????????下例中的匿名函数的执行环境为全局所以? ???????????????????????? ?????????????????????????以往解决办法会匿名函数调用处理定义变量,然后在匿名函数中使用。 ???????????????????????? ????????????????????????使用箭头函数后? ????????????????????????? ????????????????????????事件中使用箭头函数结果不是我们想要的???????????????????????? ????????????????????????????????事件函数可理解为对象 ????????????????????????????????但使用箭头函数时 ????????????????????????下面体验使用普通事件函数时 ????????????????????????使用普通函数时 ????????????????????????? ????????????????????????下面是使用箭头函数时this指向上下文对象? ????????????????????????? ????????????????????????使用 ????????????????????????? ????????apply/call/bind? ? ? ? ? ??????????????????改变this指针,也可以理解为对象借用方法,就现像生活中向邻居借东西一样的事情。 ????????????????1.原理分析????????????????????????构造函数中的 ???????????????????????? ????????????????????????可以改变构造函数中的空对象,即让构造函数this指向到另一个对象。? ???????????????????????? ????????????????2.apply/call????????????????????????call与apply 用于显示的设置函数的上下文,两个方法作用一样都是将对象绑定到this,只是在传递参数上有所不同。? ? ? ?? ????????????????????????apply 用数组传参 ????????????????????????call 需要分别传参 ????????????????????????与 bind 不同 call/apply 会立即执行函数 ????????????????????????语法使用介绍 ???????????????????????? ????????????????????????使用? ???????????????????????? ????????????????????????找数组中的数值最大值 ????????????????????????? ????????????????????????实现构造函数属性继承
??????????????????????制作显示隐藏面板
????????????????3.bind????????????????????????bind()是将函数绑定到某个对象,比如 a.bind(hd) 可以理解为将a函数绑定到hd对象上即 hd.a()。 ????????????????????????????????与 call/apply 不同bind不会立即执行 ????????????????????????????????bind 是复制函数形为会返回新函数 ????????????????????????bind是复制函数行为 ???????????????????????? ?????????????????????????绑定参数注意事项 ???????????????????????? ????????????????????????在事件中使用 ???????????????????????? ?????????????????????????动态改变元素背景颜色,当然下面的例子也可以使用箭头函数处理
???????????????? |
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 10:00:43- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |