欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

js day4函数(下)

程序员文章站 2024-01-25 19:48:46
...
//day4
    //argument
//定义一个函数,如果不知道用户是否传入了参数,或者说不知道用户传入了几个参数,没办法计算,但是如果在函数中知道了参数的个数,也知道了,每个参数的值,可以
    //定义
//    function f1 () {
//    //    获取的是函数在调用的时候,传入了几个参数
//        console.log(arguments.length);
//    }
//    f1 (10,20,30,40); //调用



//    var sum = 0;
//        function f1 () {
//        for (var i = 0;i < arguments.length;i++) {
//           sum += arguments[i];
//        }
//            return sum;
//    }
//    var result = f1 (10,20,30,40);
//    console.log(result);





//    匿名函数的调用
//        var f1 = function () {         //变量存储一个函数,相当于函数,就可以调用了
//        var sum = 0;
//        for (var i = 0;i < 4;i++) {
//            sum += arguments[i];
//        }
//       return sum;
//    };                               //因为是变量赋值,所以要加分号
//    var result = f1 (10,20,30,40);
//    console.log(result);




//函数名同名区别
//    function f1 () {
//    console.log("好猥琐哦");
//}
//    f1 ();
//    function f1 () {
//        console.log("好帅哦");
//    }
//    f1 ();
//
//                            //输出两次好帅哦
//
//
//    var f2 = function () {
//        console.log("好帅哦");
//    }
//    f2();
//    var f2 = function () {
//        console.log("真的好帅");
//    }
//    f2();
//    f2();
                                //输出一次好帅哦  两次真的还帅






//    函数名代表的是函数代码,那么将函数名换成函数代码,调用

//        function f1 () {
//            console.log("我好开心");
//        }
//        f1();
//        //f1代表函数名----函数代码------用变量存储匿名函数-----不用变量用代码调用
//        (function () {
//            console.log("我好开心");
//        })();


//函数自调用
//    (function () {
//        console.log("我好开心");
//    })();

//声明的同事,直接调用
//    var f1=function() {console.log("我好开心")};
//    f1();
 //   一次性的


//    函数自调用两种方法
//(函数) (实参)    外面2个括号并排的是先计算前面括号的值 然后执行这个返回值 当然返回的肯定要是函数
//    (function (n1,n2) {
//        console.log(n1+n2);
//    })(1,2)

//(函数(实参))  外面一个括号的 是直接获取返回值里面计算一次
//    (function (n1,n2) {
//        console.log(n1+n2);
//    }(1,2))



//函数的数据类型
//    function f1 () {
//    console.log ("我是函数");
//}
//    console.log(typeof f1);






//函数回调--------------函数作为参数使用了
//    function f1 (fn) {
//    fn ();
//}
//    function f2 (){
//        console.log("这也可以");
//    }
//    f1(f2);
//
//    function sayHi (fn,fm){
//        fn ();
//        fm();
//    }
//    function sayHe () {
//        console.log("老师好帅哦");
//    }
//    function sayHe () {
//        console.log("老师好猥琐哦");
//    }
//    var say = function () {
//        console.log("老师猥琐啊啊")
//    }
//    var say = function () {
//        console.log("刘阳洋好帅啊")
//    }
//    sayHi(sayHe,say);



//函数作为返回值
//        function f1 () {
//                console.log("函数f1被调用了")
//                return function f2 (){
//                    console.log("这是一个函数")
//                };
//         }
//        var ff = f1 ();          //函数f1倍调用了
//        ff ();                  //------调用  这是一个函数







//作用域
/**
 * 全局作用域:全局变量的使用范围
 * 局部作用域:局部变量的使用范围
 *
 * 全局变量:声明的变量是使用var声明的,那么这个变量就是全局变量,可以在任何页面使用,如果页面不关闭,那么就不会释放,就会占空间,消耗内存
 * 局部变量:在函数内部定义的变量,外面不能使用,会报错
 * function f1 () {
 * var num = 10;
 * }
 * f1 ();
 * console.log(num);  //报错
 *
 *  隐式全局变量:
 *function f1 () {
 * num = 10;
 * }
 * f1 ();
 * console.log(num);  //不会报错 ------10
 * 块级作用域:一对大括号就可以看做是一块,在这对大括号里面使用的变量,变量只能在这块的范围使用,但是在js中定义的变量也能使用,说明js中没有块级作用域,除了函数以外
        {
            var num = 10;
            console.log(num);  //10
        }
        console.log(num);   //10

        if (true) {
            num = 10;
        }
        console.log(num);  //10
*/





//    delete 删除变量(隐式全局变量与全局变量区别)
//    var num = 10;
//    num1 = 20;
//    delete num;
//    delete  num1;
//    console.log(typeof num1); //报错
//    console.log(typeof num1); //wndefine
//    console.log(typeof num);  //Number




//作用域链
//    function f1 (){
//        num = 10;
//        function f2 () {
//            num = 20;
//            function f3 () {
//                num = 30;
//            }
//            f3 ();
//        }
//        f2();
//    }
//    f1();



//预解析:提前解析代码
//把变量/函数的声明提前了,所在作用域上面
//    console.log(num);   ----undefined
//    var num = 10;
//    f1();            // 先解析函数和变量的声明,然后函数调用在前,先执行函数内的代码
//    console.log(a)    // 报错 ,后面代码不执行
//    console.log(b)
//    console.log(c)
//    function f1 () {                           //结果9 9 9 报错
//        var a = b = c = 9;           //只有var a,b和c都没有var
//        console.log(a)
//        console.log(b)
//        console.log(c)
//    }

// 先解析函数和变量的声明,然后执行输出
//    console.log(a)    // 报错 ,后面代码不执行
//    console.log(b)
//    console.log(c)
//    function f1 () {                           //结果 报错
//        var a = b = c = 9;     //只有var a,b和c都没有var
//        console.log(a)
//        console.log(b)
//        console.log(c)
//    }
//    f1();

 

相关标签: JavaScrip