JavaScript中函数的分类和argument伪函数以及函数的嵌套使用
函数
函数概念
用代码来做特定的功能,去调用。
函数优点
- 
减少了代码冗余 
- 
提高了代码的可维护性和可阅读性 
函数的分类
- 
系统函数 (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.执行完后,执行栈里的内存空间会回收,将这个内存空间销毁

 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号