asfdsa

function 函数名 (参数1,参数2,...){

语句块}

参数可以理解为变量名,参数的值可以理解为变量的值

这种写法,叫命名函数

匿名函数

var 函数名 

第三种:

函数的第一个作用:执行函数就会执行语句块,多次执行,可以减少代码的重复.

函数的第二个作用:

函数的第三个作用:封装性,通过传参,让函数根据参数的不同,完成不同的结果,多态性,参数不同可以有不同的结果.

命名函数具有预解析,预赋值,

明明函数定义在任何位置都不重要,可以理解成当前script刚开始的时候,命名函数已经定义完成了

命名函数最大的特点是预解析,预赋值,在script最开始的地方

重复开辟相同空间,第二个不起作用

变量定义只做预解析,不做预赋值.匿名函数当运行的匿名函数之后才能调用,在匿名函数之前只有预解析,没有预赋值,

匿名函数命名:

getsum的起名属于二次命名.

第三种函数.

这属于自执行匿名函数,无法第二次调用,只能执行一次.

在前面使用+ - ! ~都是自执行函数.

3.构建函数创建函数

优势:

反射:将字符串反射为js代码运行.

函数执行顺序

函数具有多次可执行的特点:

入口函数:

函数的参数

获取函数的形参和实参的数量

函数的参数有4种情况:

1.必填参数

2.初始值参数,默认值参数

3.可选参数

4.剩余参数

获取

实参多出来了的时候.

剩余参数和arguments是不同的类型

不能混为一谈

函数的伧俗乐行要严格按照顺序定义

区别,剩余参数arg  heargiument

局部变量:

函数内部如果继续定义变量,也叫局部变量,因为不能在函数外部调用

函数内部定义的变量优先级高于形参,覆盖参数传入形参

js是一个弱类型语言,意味着函数中的参数,无法限制,传入实参的数据类型,这有可能因为传入参数的类型,不符合运行的特征造成函数的错误.

这时候,我们尽量在函数中判断函数的数据类型,或者进行数据类型的转换,以保证我的的函数运行后,达到预期。

自己限定传入参数,并有错误提醒

错误的类型

使用时该值不存在就是引用错误.

一旦抛出错误,后面的内容不能执行,

只能在函数内部使用,该函数后面的内容不能执行


函数的作用与

函数外的变量,函数内可以调用,函数内定义的变量,函数外无法调用.

函数的变量,是有作用范围的,可以推测,任何变量都有作用欲

每一个函数是一个作用域,父级作用域定义的变量,自己可以可以调用;

但是自己定义的变量,不能在父级中调用

作用域以函数来划分,一个函数就是一个作用域

函数内使用var定义的变量,会在执行函数开始做预解析,函数该开始时,就被分配了空间

当函数执行完成后,就会立即销毁子级作用域中的栈中的数据(闭包除外)

如果父级作用域与子级作用域中的变量同名时,无法调用父级,只能调用子级

修改全局变量

函数中,局部变量,在函数中,使用var定义的变量就是局域变量,let定义局部变量,const定义局部常量,

不能覆盖

参数是可以覆盖匿名函数命名的

匿名函数命名可以被函数中使用var的局部变量覆盖.

1.如果在这个匿名函数中,直接给匿名函数命名,重新赋值,是无效的.

2.如果在这个匿名函数中设置参数的名与匿名函数的命名相同,将会覆盖匿名函数的命名

3.如果在这个匿名函数中设置的var定义局部变量名与匿名函数命名相同,将会覆盖匿名函数命名

4.函数中的命名函数也是局部变量

匿名函数的命名被覆盖:

全局变量和局部变量有什么用处

纯函数

概念:执行函数后,不会对函数外的任何变量造成影响,或者影响其他的全局内容,

全局变量的特征:长期留存的特征.

纯函数

函数之外的作用域

const定义的常量也在与一块中

在同一个作用域中,let不能定义两个相同的变量.

当函数中,使用let定义了局部变量,那么当前函数匿名函数的命名,就无法使用

在函数中,如果使用了let,意味着匿名函数的命名,参数,局部变量,局部函数的的名称都不能相同.

当把函数定义在语句块中,那么函数就会在语句块开始的时候做域解析域赋值

面试题,蒙的1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值