Chapter VI -- 函数

89 阅读2分钟

创建函数

    1var 函数名 = function () { 
            函数体;
     } 
    函数名(); //调用函数 定义的函数会预处理,提前加载

    例:var funntio = function () {
        console.log('你好');
    }
    funntio();

    2function 函数名 () {
        函数体;
    }
    函数名();

    例:function fnuene () {
        console.log('你好');
    }
    fnuene();

    3var 函数名 = () => {
        函数体;
    }
    函数名();

    例:var fever = () => {
        console.log('你好');
    }
    fever();

    4var 函数名 = new Funcction (`函数体`);
    函数名();

    例:var fnnfhtg = new Function (`console.log('你好');`);
    fnnfhtg(); 

函数的作用域(变量能用的范围)问题

    函数中变量的使用,能在函数中找得到,不会在外边找
    取变量:就近原则
全局:
    1、定义在外边(var/let/const),分支循环代码块里(var),在函数中可以使用
局部:
    1、在函数中定义变量,只能在函数中使用
全局作用域:
    1、不能用name定义为变量,因为是关键字
块级作用域
    1let/const 定义在代码块中

    例:
    fnumdio();
    function fnumdio () {
        //console.log(str); 报错 Cannot access 'str' before initialization
        let str = 'hello';
        console.log(str); // hello
    }
    // console.log(str); 报错 str is not defined

    fnumdio1();
    function fnumdio1 () {
        //console.log(num);//undefined
        var num = 'hello';
        console.log(num); // hello
    }
    //console.log(num);//num is not defined 

参数:一个函数中动态的数据,可以做为参数转入

    形参(接收的变量)
    实参 (传递的数据)
参数的特性:
    1、局部作用域
    2、传递和接收一一对齐
    3、没有传递数据时,形参默认值是undefined
    4、可以修改默认值,在形参后直接赋值

    例:
    // accber = 'admin';
    // password = 'admin123'; 
    number('admin' ,'admin123'); //实参既可以直接直接用属性名,也可以写在调用函数里,但是要与形参一一对齐
    function number(accber = 'admin', password = 'admin123') { //修改默认值,在形参后面直接赋值
        if (accber == 'admin' && password == 'admin123') {
            console.log('登入成功');
        } else {
            console.log('登入失败');
        }
    } 

返回值:执行函数之后拿到的数据

retarn 数据;
    1、一个函数只能执行一个retarn
    2、retarn会终止整个函数
    3、要返回多个数据,封装到对象中返回
    4、把数据封装到对象时,如果键值对的名一样,可以{ key,...}
    
    例:
    str(10 , 20 , 'jieka' , 18);
    function str (num1 , num2, name , age) {
        let str1 = num1 + num2;
        console.log(str1 +' '+ name +' '+ age);
        return {
            name : 'jieka',
            age : 18
        }
    }