2020/02/07 03-箭头函数、传参、作用域和异常处理

在这里插入图片描述
每种语言有点区别,函数表达式也有点不一样
在这里插入图片描述
可以认为这个后面的匿名函数就是lambda表达式

在这里插入图片描述![
申明提升

在这里插入图片描述
python的东西可以在这里加强一下 在这里插入图片描述
这里是把匿名函数立即调用了,一旦调用就是生成器对象,就可以next了
在这里插入图片描述直接写return不允许
在这里插入图片描述
箭头函数
在这里插入图片描述
还有其他的写法,逗号表达式是以加5为准
在这里插入图片描述
要看x=右边多少
在这里插入图片描述
undefined的未定义
在这里插入图片描述

返回undefined
在这里插入图片描述
返回的结果是一个数组,每次返回的undefined加到了数组里去
在这里插入图片描述
打印的函数一般没有返回值
在这里插入图片描述
要想有返回值,逗号表达式不允许出现return
在这里插入图片描述
需要这么写
在这里插入图片描述
所以这个箭头函数等于
在这里插入图片描述
但是JS觉得还不够精简,只有一条语句,且没有return,是可以把大括号去掉的

x输入进去,加10,然后输出到屏幕,函数的返回值是undefined
在这里插入图片描述
只有一条语句可以不加括号,但是不能有return
虽然可以答疑110,但是没有返回值就是undefined
在这里插入图片描述
有返回值
在这里插入图片描述在这里插入图片描述
如果只有一条return语句可以精简更多,直接写成这样,不管x是什么,都return 2000
在这里插入图片描述
这个函数就等价于这个样子
在这里插入图片描述
在这里插入图片描述
把上面的转换成箭头函数
在这里插入图片描述
一个参数的情况下,a即可
在这里插入图片描述
如果是2个参数,写成这样就是逗号表达式,不对
在这里插入图片描述
只能括起来
在这里插入图片描述
如果是无参,就用括号,中括号,如果是一参,可以加括号也可以不加括号,大于一个参数,多个参数应该用括号括起来

右边是一条语句,就可以舍弃掉大括号,如多余一条语句,大括号就不可以舍弃
在这里插入图片描述
在这里插入图片描述
这样写等价于这个
在这里插入图片描述
这个函数就相当于后面return undefined
在这里插入图片描述
等于这个样子
在这里插入图片描述
箭头函数在ES6用的很多,很精简,可以一眼看出表达的意思是什么

在这里插入图片描述
return可以变化成这些,单独的return语句可以把大括号全部去掉
在这里插入图片描述
箭头函数没有参数用()括号
只有一个参数,可以省略小括号
多个参数不能省略小括号,且使用逗号间隔

在这里插入图片描述
一个函数什么都不写,相当于return undefined,写了return,那return 什么就是什么。
return的时候,是用逗号表达式,这时候的值就跟逗号表达式的值有关系

在这里插入图片描述在这里插入图片描述在这里插入图片描述
等于10没有问题在这里插入图片描述在这里插入图片描述
y是undefined,这里做了隐式转换
在这里插入图片描述
这里没有像python的关键词的说法,只有表达式赋值的结果(5,6),python特殊,别的语言不这么玩
在这里插入图片描述这样传只有x有值,y相当于只定义了变量,没有赋值,就是undefined,NaN加任何数字就还是NaN
在这里插入图片描述
总结:JS传参,可以使用缺省值,好习惯是把缺省值放在最后,
在这里插入图片描述
这么写x就是undefined,就是NaN
undefined+字符串是拼接,undefined+数字是NaN
在这里插入图片描述
这里现在有缺省值
在这里插入图片描述
在JS中,没有python那么复杂,只有形参定义,没有关键字传参,只有形参,可以给缺省值,但是缺省值建议往后。能对应的对应,不能对应的,多的就丢弃截断。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
**
JS没有关键字传参
JS只做参数位置的对应
JS 并不限制默认参数的位置。
建议只要有参数缺省值就往后写,python有些例外,缺省值不能写到可变参数后面,可变关键字参数需要放到最后,keyword-only是缺省值,可变位置传参,和关键字的传参的缺省值应该放在可变参数前,再往前是最普通的的参数**
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
6789被y收入了
在这里插入图片描述在这里插入图片描述
在后面加个参数z就不可以了,剩余参数应该是最后一个
在这里插入图片描述
in就是用的索引
在这里插入图片描述
ES6的箭头函数不建议使用这个
在这里插入图片描述
在JS里,只要有大括号都是对象在这里插入图片描述
把arguments,把你传的所有参数收集进来在这里插入图片描述
但是现在是传统的function定义方法,arguments需要改进下,所以就帮你把所有的参数都收集了
在这里插入图片描述
传参依然放到arguments了,但是能用的就是,x,y,arguments会把传实参的所有参数收集,但是已经退出历史舞台,能不用就不用
在这里插入图片描述
合约
在箭头函数使用,就不是刚才function传统定义的意思 了,这些其实是全局的一些信息在这里插入图片描述
箭头函数毕竟是ES6重新提供的函数,内部实现也是有区别的
在这里插入图片描述
箭头函数使用arguments就根本不是你想要的东西
在这里插入图片描述
所以到ES6可以不使用了
在这里插入图片描述在这里插入图片描述

解构

在这里插入图片描述
相当于把这5个参数做解构,5个参数分别跟这些形参对应,x=1,y把2345全部收掉在这里插入图片描述
JS报错虽然少,但是很容易造成程序开发疏忽在这里插入图片描述
JS支持参数解构,不需要结构后的值个数和参数个数对应

值不够就是,undefined,相加就是NaN
在这里插入图片描述
返回值一直都是一个
在这里插入图片描述
赋值表达式的值:等号右边的值,逗号表达式的值,就是最后一个表达式的值
在这里插入图片描述
a=逗号表达式最后的值,等于true
在这里插入图片描述
b 的值是test
在这里插入图片描述
最后是ok出来就是ok
在这里插入图片描述
在这里插入图片描述

作用域

在这里插入图片描述在这里插入图片描述在这里插入图片描述a可以
b没问题,要么是函数作用域,要么是全局作用域,顶格就是全局,还有申明提升的作用,不赋值就是undefined
c不可见,出不来语句块

在这里插入图片描述
在这里插入图片描述
查看下面例子
在这里插入图片描述
在这里插入图片描述x全局
在这里插入图片描述z出不去语句块
var o提升到函数的最大作用域
t=‘free’,只要函数定义,就跑到全局的
let p 出不去语句块
*
在这里插入图片描述
P在语句块里出不来在这里插入图片描述
z在外层定义,里面是可以打印的
在这里插入图片描述
函数执行完,只保留了t,因为t是全局的,所以定义的时候最好不这么定义在这里插入图片描述
这里如果后面有var z=10,可以打印,因为申明提升,但是还未赋值,是undefined在这里插入图片描述
const常量是不允许修改的

在这里插入图片描述
还有严格模式,照样执行完了,没起作用是要求写在第一行
在这里插入图片描述
直接报错

在这里插入图片描述
x必须是var或者let
在这里插入图片描述
严格模式必须写在代码的的第一行

异常

在这里插入图片描述在这里插入图片描述
这样就抛出异常了
在这里插入图片描述
也可以使用try语法,catch抓住,几乎所有都支持finally
这一次抓住了
在这里插入图片描述
抓住现在就什么都不做,刚才是抓住之后打印信息
在这里插入图片描述
抛出来的东西是new出来的,是object
在这里插入图片描述
在这里插入图片描述
实际上取的name就是constructor.name,有构造器的在这里插入图片描述
以前是在catch这里写什么类型,变成了在里面对e进行,判断它的type,instanceof,用in来判断在这里插入图片描述
在这里插入图片描述
子类可以属于父类,但是父类不可以说是子类,通过istanceof,来判断异常是什么样的
在这里插入图片描述
这里没有除0异常
在这里插入图片描述
这个东西真当异常抛出,python如果要抛出一定是要exception子类
在这里插入图片描述
在这里插入图片描述
总结:在JS中,只要throw后面抛出一个对象即可,没有什么具体要求,只要有异常都可以catch住,一个入口catch住,只要是异常都可以catch住,在catch中你想写什么都随你写,可以用instanceof,也可以直接取类型名字,拿到之后做相应处理,finally做最后的处理

**没有finally也可以,try,catch,finally,都不能单独使用,try一般是,try catch,try finally,try catch finally
**
在这里插入图片描述在这里插入图片描述在这里插入图片描述
理解作用域和箭头函数,箭头函数用的新语法,就是新办法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值