JavaScript中函数的分类和argument伪函数以及函数的嵌套使用

函数

函数概念

用代码来做特定的功能,去调用。

函数优点

  1. 减少了代码冗余

  2. 提高了代码的可维护性和可阅读性

函数的分类

  • 系统函数 (console.log()、alert()、 prompt()、write())

  • 内置函数 (Math.pow()、Math.PI)

  • 自定义函数(function name(){})

 

 

自定义函数的分类

1.匿名函数**

function(形参(可以省略的 可以有多个)){
   函数体(代码)
}
//直接调用 让别人(事件)去调用(自动调用)
(function(){
   console.log('匿名函数')
})()

2.具名函数 (常用)

//function name(形参,形参)用逗号隔开{
//函数体
//}

--------无参数的具名函数

function name(){
console.log('')
}
name()

--------函数名在函数前

var name = function(){
console.log('')
}
//调用函数
name()

3.new function方式函数

//var 函数名 = new Function('形参,形参1...','函数体')
//定义
var name = new Function('console.log("bye bye!!")')
//调用
name()
//传参
var name = new Function('name','console.log("bye bye!!"yourname)')
//调用
name ('张三')

 

函数的arguments(参数数组,集合)

arguments是一个伪数组即:有部分数组的特性的数组

(可以通过.length来查看元素个数)

(还可以通过[i]下标来访问里面的元素)

//计算未知个数的参数的累乘
function fn5(){
           var i = 0
           var sum=1
           for(i=0;i<arguments.length;i++){
               sum*=arguments[i]
          }
           return sum
      }
       console.log( fn5(1,2,3));

 

 

 

 

 

 

函数的嵌套

function checkYear(year){
           if(number%4==0 || number%400==0 &&number%100!=0){
                return true
          }
      }

       function checkDay(day,max){
           if(day>0 && day<=max){
               console.log('当前日期合格');
          }else{
               console.log('当前日期不合格');
          }
      }

       function fn(year,month,day) {
           if (month>0 && month<=12) {
               if (month==2) {//2月特殊月
                   
                   if(checkYear(year)) {
                       checkDay(day,29)
                  }else{
                       checkDay(day,28)
                  }
              }else{//其他月份
                   switch(month){
                 case 4: case 6: case 9: case 11:
                           checkDay(day,30)
                       default:
                           checkDay(day,31)
                  }  
              }  
          }  
      }
       fn(2000,2,29)

 

 

 

 

 

 

程序执行前的预编译过程里

1.会声明function和var修饰的变量,开辟内存空间

2.function开辟空间后会将代码块放入,等待调用

3.var修饰的变量开辟空间后如果没有赋值,会默认给undefined值

函数执行过程

1.把function开辟空间后里面的代码块给方法栈去执行

2.执行栈会自动取执行对应的方法,执行完后返回结果

3.执行完后,执行栈里的内存空间会回收,将这个内存空间销毁

 
posted @ 2022-07-28 19:59  奇思妙想流川枫  阅读(177)  评论(0)    收藏  举报