JS学习之—函数的使用与规则(35~42)

122 阅读3分钟

函数

概念

function是一种复杂数据类型 image.png

定义与调用

联想截图_20231029103527.png 联想截图_20231029103543.png

定义方式:

1. 声明式 与赋值式的区别是,可以先调用后定义

function test1(){
} //定义
test1() //定义了就需要调用才能实现

2. 赋值式 必须先定义再调用,不然报错(控制台红色警告)

var test3 = function(){
}
test3()

TIP: 用var定义的变量,预解析时,会把声明这部分提到前面,即例如var test部分。

所以这里涉及到函数的预解析问题

myFunc()

        var myFunc = function(){
            console.log("myFunc")
        }

        myFunc()

这个函数里, var myFunc在预解析中会被调到前面,但是还没有被赋值,所以调用的结果为undefined。 接着var被赋值后,再次调用,就可以正常打印了

预解析(又名:变量声明提升)

提升不能跨function或者script。但是其他访问或使用 是正常的,可以跨

意思就是: 执行代码前,先提炼一下大纲,尽量不报错 联想截图_20231030124026.png

函数的参数

联想截图_20231029110132.png 注意:

联想截图_20231029111509.png 对于你下面调用的时候不写东西,即test()的处理办法,如果不处理,默认不显示,但是在实际运行中,如果你不写东西需要系统做出一些反应来让我们得知你没有写东西

联想截图_20231029112224.png

return

(返回值,终端函数)

看需求,需不需要返回或者往外输出,并不是所有函数都需要加return 联想截图_20231030122849.png

function add(x,y,z){
   var result=x+y+z
   
   return result
 }
 
 
 var res = add(1,2,3)
 console.log(res)
 
 
 function test(a){
    console.log("传给后端用",a)
 }

函数重名现象

1.同类型,遵循后来者居上

2.变量和function重名

案例:

联想截图_20231030130608.png 最后结果是100

TIP: var只提升定义,而function会把整个部分都提升

作用域

联想截图_20231030131945.png

image.png

变量使用规则

1.访问规则 (就近原则,重名覆盖)

(也叫做作用域查找机制)

(只能是向上找,不能向下找) image.png

2.赋值规则

联想截图_20231030215940.png 两种写法都可以,但是建议第一个 联想截图_20231030215650.png