函数1:function,封装函数,return,JS预解析

函数是复杂数据类型:

函数就是对一段代码的封装,在我们想调用的时候调用
函数的几个优点
1. 封装代码,使代码更加简洁,减少代码量。

封装:.js文件,调用需要script标签src 引入,再使用


//判断 是 平年 或者 闰年
    // year 输入年份
function isLeapOrLear(year) { 

    if ( year%4 == 0 && year%100 != 0 || year%400 == 0 ) {
        return true     // 闰年
    } else {
        return false    // 平年
    }
}
var res = isLeapOrLear(1200)


2. 复用,在重复功能的时候直接调用就好
3. 代码执行时机,随时可以在我们想要执行的时候执行

函数定义:

声明式函数:(调用函数可以在函数定义之前,也可在函数定义之后)

赋值式函数:(调用只能在函数定义之后)

函数的参数:形参是一个变量,实参是一个数值.

                形参:再函数定义的时候()中写的变量名字,可以书写多个,之间逗号隔开

                实参:再函数调用的时候()中写的具体的值,可ui书写多个,之间逗号隔开

return终断函数、返回值: 让后边的代码不再继续执行,注意位置。可以返回值,返回给调用者。

函数分为两种:

声明式:函数后边有函数名

赋值式(匿名函数):声明函数,函数后括号前没名

    <script>

        /* 
                声明式函数调用在创建的前后都是可以的
                赋值式函数只能再创建的后面调用,前面调用会报错
                原理:等下午的预解析会解释到
        */
        // fn1()
        // 声明式
        function fn1() {
            console.log('是fn1');
        }
        fn1()    //调用函数

        // 赋值式\匿名函数
        var fn2 = function () {
            console.log('fn2');
        }
        fn2()
    </script>

JS预解析:

         只解析:2种,如下:
                               

2.声明式函数

      <script>

        fn()
        var fn = function () {
            console.log('我是fn函数');
        }
        fn()
        /* 
            以上代码的执行过程
            第一先预解析:
                读第一句:不需要预解析
                读第二句话:碰到var了,所以要预解析,告诉浏览器创造了一个名字为fn的变量,暂时不赋值,所以此时fn的值是undefined
                读第三句:不需要预解析
            执行代码
                执行第一句话:fn()需要调用fn函数,此时程序中没有fn函数,只有一个fn变量,变量不是函数,后面写()语法是错误的,所以这里会报错
                程序报错了,后续代码将不再执行
        */

       <script>

 1.用var创造的变量

    <script>
        /* 
            预解析:也叫做声明提升(声明提前)
            js是一门解释型语言,解释型语言他的执行会分为2步,
                第一步会先从头到尾对代码进行通读解释
                第二步才会从头到尾真正执行代码

            js中的预解析,只解析2个东西
                1.用var创造的变量
                2.声明式函数
        */
       
        console.log(a);
        console.log(a + b);
        var a = 10
        var b = 20
        console.log(a + b);

        /* 
            以上代码的执行过程
            打开浏览器
            第一步先预解析
                读第一行:不需要预解析
                读第二行:不需要预解析
                读第三行:需要预解析,因为有var,所以这时候就会让浏览器帮我们创造一个名字位a的变量,不赋值
                读第四行:需要预解析,因为有var,所以就会让浏览器帮我们创造一个名字为b的变量,不复制
                读第五行:不需要
            第二步执行
                执行第一行:打印a的值,此时因为预解析阶段已将创建好了a但是并没有赋值,所以a的结果是undefined
                执行第二行:打印a+b,因为预解析阶段已经创建好了a和b,所以此时a和b都是undefined,undefined+undefined=NaN
                执行第三行:a = 10,给a赋值为10
                执行第四行:b = 20,给b赋值为20
                执行第五行:打印a+b,因为a和b已经有值了,分别为10和20,所以求和结果是30

        */
    </script>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值