IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 关于阅读 ES6- 函数 整理的问题 -> 正文阅读

[JavaScript知识库]关于阅读 ES6- 函数 整理的问题

1、ES5怎么设置函数参数的默认值

答:function aa(x){
x = x || ‘hello’
console.log(x)
}

2、ES6怎么设置函数参数的默认值

答:可直接设置在参数后面
function aa(x = ‘hello’){
console.log(x)
}

3、ES6中函数的默认参数有什么特点

答:默认参数是惰性的,每次调用函数,都是重新计算,而不是在每次进行叠加
let x = 11
function a(p = x+1){console.log§}
a() // 12
x = 12
a() // 结果为13 惰性求值,并不会继续使用第一次 p=12的值

4、函数的length怎么进行计算

答:length是第一默认参数出现之前的参数个数,也不包括rest参数
(function a(){}).length // 0
(function a(x, y=1, z){}).length // 1
(function a(…rest){}).length // 0

5、函数的参数设置默认参数和不设置默认参数的区别

答:设置了默认参数的会单独形成一个作用域,等到初始化结束,这个作用域才会消失
没有设置默认参数的不会形成单独作用的

6、怎么获取函数的剩余参数

答:使用函数的 rest参数,即可获得由剩余参数所组成的数组
function a(x, …rest){console.log(rest)}
a(1,2,3,4,5) // [2,3,4,5]

7、函数的rest参数后面如果跟着其他参数,会怎么样

答:会报错

8、严格模式可以在函数体内进行设置吗

答:ES5中可以
ES6中如果函数的参数设置了默认参数、解构赋值、扩展运算符,那么函数体内设置严格模式会报错。
可以通过设置全局严格模式

9、怎么获取函数的函数名

答:通过函数的name属性
(function a(){}).name // 常规函数返回函数名 ‘a’
(function (){}).name // 匿名函数返回空字符串’’
(() => {console.log(1)}).name // 箭头函数返回 空字符串’’
(new Function).name // 匿名函数返回 anonymous
((function a(){}).bind({})).name // bind函数返回 ‘bound a’

10、如果将一个匿名函数赋值给一个变量,那么这个函数的name会是什么

答:ES5中返回空字符串,ES6中会返回变量名

11、如果将一个具名函数赋值给一个变量,那么name是什么

答:返回这个函数的函数原本函数名,而非变量名

12、箭头函数的特性

答:箭头函数没有自己的this
箭头函数不可以作为构造函数
箭头函数不能用 arguments,但可以使用 rest 参数
箭头函数不能用作Generator函数,不能使用 yield 命令
this指向的是函数定义时所在的对象,而不是执行时所在的对象

13、箭头函数的this的指向固定化是为什么?

答:因为箭头函数没有自己的this,this是外层对象。所以箭头函数不能作为构造函数

14、箭头函数可以使用call() bind() apply来改变this的指向吗?

答:不能,因为箭头函数本身没有自己的this

15、ES7中的函数绑定运算符是什么?

答:函数绑定运算符的功能和 call bind apply一样,就是将一个函数绑定到一个对象上,改变函数的this指向
bar::aaa // 表示aaa绑定到bar对象上,this的指向变成 bar,相当于 aaa.bing(bar)
foo::aaa(…arguments) // 表示aaa绑定到foo对象上,this的指向变成foo,相当于aaa.apply(foo, arguments)

16、什么是函数的尾调用

答:函数的最后一步是调用一个函数,形如下面这种形式
function a(x){
return g(x)
}

17、什么叫做‘尾调用优化’

答:当函数的内层函数不用外层函数的变量时,可以直接去掉外层函数而保留内层函数的调用桢时,就叫做‘尾调用优化’
function a(){
return function b(){
console.log(111)
}
}
可以直接尾调用优化成:
function b(){
console.log(111)
}
注意:只有函数是尾调用函数的时候,才能实现 尾调用优化

18、什么叫做‘递归’

答:函数自己调用自己,叫做 递归

19、什么叫做‘尾递归’

答:尾调用函数调用自身,叫做 尾递归。可大大的节省内存

20、尾递归相比于 递归有什么优点?

答:永远不会‘栈溢出’。因为递归有成百上千的调用桢,容易发生栈溢出,
而尾递归的栈只存在一个调用桢,所以不会溢出

21、函数编程概念中的 ‘柯里化’是什么?

答:就是把多个入参函数改一单个入参的函数

22、严格模式下可以进行 尾调用优化吗?

答:不行。因为函数里面存在 arguments(调用时函数的参数)和caller(调用当前函数的那个函数)
尾调用优化的时候会改变调用栈,所以 arguments和caller就会失真报错

23、在严格模式下怎么实现 尾调用优化的效果呢?

答:使用循环代替

24、ES2017的对于函数定义和函数调用的尾逗号的处理是什么?

答:ES2017之前不允许出现尾逗号
ES2017之后允许函数定义和调用时最后一个参数可以有逗号的存在
这样就和对象数组等统一逗号的规范

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-04-30 08:37:40  更:2022-04-30 08:37:57 
 
开发: 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/24 0:50:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码