JavaScript学习第四天

JavaScript带有返回值的函数

    function func(){
        console.log("没有返回值的函数")
    }

    // 调用
     func();

    // console.log(func());// 打印方法执行后的结果  undefined 没有返回值

    console.log("------------")

    // return 语句   返回值(结果)
    function func2() {
        console.log("带有返回值的函数");
        var x=10;
        return x;
    }
     func2();

     console.log(func2());// 10

     var res=func2();
     console.log(res);

    // 注意事项  return 之后的代码不执行   函数停止执行
    function func3(params) {
        return "func3";
        console.log("func3")
    }

    console.log(func3());

    //  应用:return; 空  退出函数

    function func5(x,y) {
        if(x>y){
            console.log(x+y)
        }else{
            return;
        }     
    }

    // func5(1,4);



    function func6(a,b) {
        console.log(a+b)
    }
    func6(10,20);



    // 工作中,经常需要对方法或函数执行的结果进行处理时,就需要使用return语句将结果返回(抛出)

    function func7(a,b) {
        return a+b
    }
    var res2=func7(10,20);
    console.log(res2);

JavaScript的作用域

     - 作用域为 可访问的变量,对象和函数的集合

     - 全局作用域:全局变量
     1.在函数外定义的变量为全局变量
     全局变量有全局作用域:网页中所有的脚本和函数都可以使用
    var num=10;
    console.log(num);
    // 函数
    function func(x) {
        console.log(x)
    }
    func(num);

    // 2.变量没有声明,直接赋值为全局变量
    // 未声明的js变量直接赋值会自动作为window的属性  window是js中顶级变量(对象)
     window.alert()
     alert();

    
    function func2() {
        num2=20;
        console.log(num2);
    }
    func2();
    console.log(num2);

    // - 局部作用域:局部变量
    // 变量在函数中声明,变量为局部作用域
    // 局部变量:只能在函数内部访问

    // 声明函数
    function funcx() {
        var x=10000;
        console.log(x);
    }
    funcx();
    // console.log(x);// x is not defined

    function funcy() {
        var y=10000;
        return y;
    }
    
    console.log(funcy());// 10000

JavaScript闭包函数

## JavaScript的闭包函数
-闭包就是能够读取其他函数内部变量的函数。例如在JavaScript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解为***“定义在一个函数内部的函数***。在本质上,闭包是将函数内部和函数外部连接起来的桥梁。
-链式作用域:子对象可以一级一级地向上寻找父对象的变量,所以父对象中的所有变量对子对象都是可见的,反之不成立。|
    
   - 局部作用域:局部变量
     变量在函数中声明,变量为局部作用域
     局部变量:只能在函数内部访问

    // 声明函数
    function func1() {
        var x=10000;
        return function() {
            return x;
        }
    }
    var res=func1();//将func1中返回的方法进行储存 
    console.log(res());
    console.log(func1()())

JavaScript自执行函数

    // function func(params) {
        
     }
     func()

    // 匿名函数
    (function() {
        console.log("自执行函数1")
    })()

     (function() {
         console.log("自执行函数2")
     }())

JavaScript闭包函数的应用

    function func1() {
        var x = 10000;
        return function () {
            return x;
        }
    }
    // var res=func1();//将func1中返回的方法进行储存 
    // console.log(res());

    // 通过window实现闭包函数
     function func1() {
         var x=10000;
         function func2() {
             return x;
         }
         // return func2;
         window.func3=func2;
     }
     func1();
     console.log(func3());


    // 应用
    // 1.可以读取函数内部的变量
    function func() {
        var a = 100;
        return (function () {
            return a
        })()
    }
    var b=func();
    console.log(b);// 100

    // 2.可以让一个变量的值始终保存在内存中
    function func2() {
        var c=99;
        fAdd=function(){
            c+=1;// c=c+1
        }
        return function(){
            return c;
        }
    }
    var res=func2();
    console.log(res());//99
    fAdd();// c+1
    console.log(res());//100
    fAdd();
    console.log(res());//101



    // 3.应用
     红:30  蓝:30

    function func3(){
        var live=30;
        return (function(){
            return live
        })()
    }

    // 游戏开始,红蓝个3条命
    var red=func3();
    var blue=func3();

    red-=1;
    console.log(red,blue);//29 30

函数的分类

1.根据有无函数名分类:
①命名函数
②匿名函数
③自执行函数

2.根据有无参数分类:
①传参函数f(x)=x+1
②形参:变量名
③实参:变量值
④无参函数
如果实参数大于形参数,多余的实参不会赋值;如果实参数小形参对应的实参将会赋值undefined。

3.带有返回值的函数
return语句:返回方 法/函数的执行的结果(值)

变量的生命周期
--JavaScript的变量生命周期在它被声明时初始化
①局部变量在函数执行完毕后销毁
②全局变量在页面关闭后销毁

JavaScript函数的封装

    // 字面量  不可被改变   重复使用字面量
    // 使用变量将字面量储存起来,直接使用变量

    // 功能函数  方法  
    // 将功能封装为函数,对外提供函数的接口(使用方法)

    // 实现10以内的  + - * /
     function add(a,b) {
         return a+b
     }
     // 告诉使用者 add 是一个用来做加法的方法 add(数字1,数字2)
     function sub(a,b) {
         return a-b
     }
     function times(a,b) {
         return a*b
     }
     function devided(a,b) {
         return a/b
     }

     var res=add(10,20);
     console.log(res);


    // 封装:相同的地方不变   不同的地方通过参数来表示
    function func(a, b, type) {
        return eval(a + type + b)
    }
    console.log(func(10, 20, "+"))
    console.log(func(10, 20, "-"))
    console.log(func(10, 20, "*"))
    console.log(func(10, 20, "/"))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值