js-函数

函数
          页面语句会顺序执行,定义函数有利于代码封装,可以把要处理的js封装在一个函数里,减少代码写作,支持多页调用,也可以通过事件执行

      函数的定义:普通函数
                function函数名(){
                      执行语句
                }
                调用:函数名(1,2,3)
                带返回值的函数
               带参数的函数
                function 函数名(a,b,c){
                      执行语句
                      return a+b
                }
                调用:函数名var v=(1,2,3)
            递归:自己调用自己,模拟循环
                function函数名(num){
                  if(num==1){return 1}
                  return 函数名(num-1)
                } 
                调用:函数名var v=(10)
      js没有重载
           重载:可以在同一个作用域下,定义同名函数,但是执行不同操作,js不可以
函数的声明方式:
    函数声明:
            function fun(a,b) {//函数声明
            console.log("这是第一个函数")
        }
    函数表达式:
            var fun1=function(b,c){
              console.log("这是第二个函数)
            }
      匿名函数
            (function)(){
              console.log("这是匿名函数)
            })()
    可变数组(可变参数):叫做argument,类似于数组,用来接受数下的多个参数值,只能在函数里,但是不能像数组一样随意更改
       例如:            
            function fun(){
            console.log(arguments.length)
            console.log(arguments[2],arguments[4])
            }
            fun(1,2,3,4,5)
       注意:arguments虽然类似于数组,但是是固定长度,不像数组是可变长度,对于数组下的操作函数,除了遍历都不可以用,只能对可变数组进行变量和修改值。
       变量和作用域和内存问题
       全局变量:在全局变量定义下
       私有变量:在js下,只有函数里定义的变量才是私有的
       基本数据类型:数字(number),字符串(string),布尔(boolean),null,undefined
       引用数据类型:object
  变量提升和作用域
     预解释(变量提升)
       在当前的作用域中,js代码执行之前,浏览器首先会把带var和function的声明内容,进行提前声明或定义
      声明和定义的区别:
        var a //声明:告知浏览器在内存中存储了一个变量
        var b=11 //定义:不但定义了变量,还进行了赋值
      变量提升的函数和变量区别:
         var在内存中只完成了声明
         function在内存中完成了声明和定义,只是函数没调用时存储的是字符串
      例如:
          console.log(a)//输出undefined
          var a=11
          fun()//执行函数
          function fun(){
            console.log("这是函数")
          }
      变量提升注意事项
         1.不定义var的区别
           console.log(a)//输出 undefined
           console.log(b)//报错,没有变量提升的过程
           var a=11
           b=22
         2.不管条件是否成立,都有进行变量提升
           console.log(a)//输出underfined 变量还存在
           if(false){
             var a=12
           }
         3.当执行一个匿名函数的时候,是不进行域解释的,代码的执行和定义一起完成了
         (function)(){
           var a=b=3 //var b=3 a=b
         })()
         }
         console.log(b)//3 b变量提升了
         console.log(a)//报错 a没有变量提升
         4.当函数里的return语句执行时,下面的语句虽然不执行,但是也需要变量提升
           注意:函数作用域下,有私有变量找私有变量,没有形参,形参没有找全局,但是如果形参和私有变量进行了变量提升,就不会找全局变量了
           function fun(){
             console.log(a)
             return false
             var a=66
           }
           fun()
         5.在js中,变量和函数名称重复,也冲突,在变量提升时,如果名称声明过了,不会再次声明,但是可以重新赋值
           function num(){
             console.log(111)
           }
           num()
           var num=66
           console.log(num)//输出:66,var不会重新声明,但是可以改变值
           num()//报错

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孙璐_iLu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值