1.17函数数据类型的运行机制
在js中,函数就是一个方法(一个功能体),基于函数一般都是为了实现某个功能
var total=10;
total+=10;
total=total/2;
total=total.toFixed(2); //=>保留小数点后两位
函数诞生的目的就是为了实现封装,吧实现一个功能的代码封装到一个函数中,低耦合高内聚(减少页面中的冗余代码,提高代码的重复使用率)
function fn(){
var total=10;
total+=10;
total=total/2;
total=total.toFixed(2);
}
fn();
ES3标准中
语法:
function 函数名([参数]){
函数体:实现功能的js代码
}
=====
ES6标准中创建箭头函数
语法:
let 函数名(变量名)=([参数])=>{
函数体
}
let fn=()=>{
let total=10;
...
}
函数作为引用数据类型中的一种,它也是按照引用地址来操作的
function fn(){
var total=10;
total+=10;
total=total.toFixed(2);
console.log(total)
}
1.函数也是引用类型,首先会开辟一个新的堆内存,把函数体中的代码当做“字符串”存储到内存中(对象向内存中存储的是键值对)
2.把开辟的堆内存地址赋值给函数名(变量名)
[函数执行]
把之前存储到堆内存中的代码字符串变为真正的js代码自上而下执行,从而实现应有的功能
1.函数执行,首先会形成一个私有的作用域(一个供代码执行的环境,也是一个栈内存)
2.把之前在堆内存中存储的字符串复制一份过来,变为真正的js代码,在新开辟的作用域中自上而下执行
输出fn代表当前函数本身,fn()执行函数
1.18函数中的形参与实参
参数是函数的入口:当我们在函数中封装一个功能,需要执行函数的时候用户传递进来才可以,此时我们就基于参数的机制,提供出入口即可
//=>此处的参数是形参:入口,形参(n/m)是变量
function sum(n,m){
var total = =0;
total = n+m;
console.log(total);
}
//=>此处函数执行传递的值是实参,实参是具体的数据值
sum(2,6); //=>n=2,m=6
sum(10); //=>n=10,m=undefined
sum(); //=>m和n都是undefined
sum(10,20,30); //=>n=10,m=20, 30没有形参变量接收