likes
comments
collection
share

01-声明提前和Function

作者站长头像
站长
· 阅读数 18

Function

1.什么是函数:

​ 程序中专门保存一段可重复使用的代码段的程序结构/对象,再起一个名字

2.什么时候使用函数:

​ 当一段代码可能被反复使用时,都要先定义在函数中,然后反复调用

3.如何定义函数:

3.1一般情况:

function 函数名(形参变量1,形参变量2,...){
    函数体;
    return 返回值;
}
/*
形参
什么是形参:
	专门保存函数调用时所必须的数据的局部变量。
什么时候使用:
	当我们定义函数时发现,函数内有的数据不确定时,都要定义形参变量。要求调用者在调用函数时传入必须的数据

返回值
什么时返回值:
	函数的执行结果
什么时候使用:
	如果将来调用函数的人需要获得函数的直接结果,继续做其它操作时,就要给函数定义返回值
*/

3.2调用函数

var 返回值=函数名(实参值1,实参值2,...)
/*
调用函数时做了什么:
	1.在内存中找到指定名称的函数,同时将实参值一一对应的赋值给函数的形参变量。
	2.按函数体的描述,执行规定好的任务
	3.将函数的执行结果,返回到函数的外部
*/

4.创建函数: 3种:

4.1声明方式:

function 函数名(形参列表){
	函数体;
	return 返回值;
}

问题:会被声明提前

什么是声明提前:

​ 1.在函数开始执行前

​ 2.负责执行程序的js引擎会先扫描2种

var声明的变量: var 变量名;

function声明的函数: function 函数名(...){...}

​ 3.js引擎会将找到的声明依次提前到当前作用域的顶部,集中创建

​ 4.特例: 赋值会留在原地!

var声明的变量被提前

01-声明提前和Function

function声明的函数

01-声明提前和Function

注意:

​ 1.只有function声明的函数会被提前

​ 2.匿名函数,箭头函数不会被提前

声明提前的缺点:

会打乱程序正常的执行顺序

4.2赋值方式:

var 函数名=function(形参列表){
	函数体;
	return 返回值;
}

好处: 不会被声明提前,保持了程序原有的执行顺序

01-声明提前和Function

结论:今后,创建函数尽量选择赋值方式,避免声明提前

4.3用new方式: (几乎不用)

var 函数名=new Function("形参名1","形参名2","函数体...")

js中函数的本质:

js中函数也是一个对象

  • 其实: 每个function,底层都相当于new Function()
  • 每个函数都有自己唯一的内存地址值

而函数名只是一个普通的变量而已

结果:

函数也可以像其他数据类型一样赋值和传参(回调函数)

即使看着一模一样的两个函数定义,但是做比较时,却是不相等的(地址不相同)!

赋值

01-声明提前和Function

01-声明提前和Function

01-声明提前和Function

传参

01-声明提前和Function

转载自:https://juejin.cn/post/7142764494601584647
评论
请登录