H5^Study

JS高级学习:函数相关

2019-04-20  本文已影响0人  Merbng

函数的声明和函数表达式

函数声明如果放在if-else的语句中,在IE8的浏览器中会出现问题,
以后宁愿要函数表达式,都不要用函数声明

// 函数声明
            if (true) {
                function f1() {
                    console.log("if的方法");
                };
            } else {
                function f1() {
                    console.log("else的方法");
                };
            }
            f1();
            // 函数表达式
            var ff;
            if (true) {
                ff = function() {
                    console.log("函数表达式的if")
                }
            } else {
                ff = function() {
                    console.log("函数表达式的else")
                }
            }
            ff();

函数中this的指向

<script type="text/javascript">
            "use strict"; //使用 严格模式
            function f1() {
                console.log(this); //window
            };
            //普通函数
               function f1() {
                 console.log(this);
               }
              f1();

            定时器中的this
               setInterval(function () {
                 console.log(this);
               },1000);

//          构造函数
               function Person() {
                 console.log(this);
            对象的方法
                 this.sayHi=function () {
                   console.log(this);
                 };
               }
            // 原型中的方法
               Person.prototype.eat=function () {
                 console.log(this);
               };
               var per=new Person();
               console.log(per);
               per.sayHi();
               per.eat();


            //BOM:中顶级对象是window,浏览器中所有的东西都是window的
        </script>

函数的不同调用方式

<script type="text/javascript">
            // 普通函数
            function f1() {
                console.log("张家界案件");
            }
            f1();
            // 构造函数---通过new来创建对象
            function F1() {
                console.log("阿加");
            }
            var f = new F1();
            // 对象中的方法
            function Person() {
                this.play = function() {
                    console.log("金娃鸡啊");
                };
            }
            var per = new Person();
            per.play();
        </script>

函数也是对象

<script type="text/javascript">
            var f1 = new Function("num1", "num2", "return num1+num2");
            console.log(f1(10, 20)); //30
            console.log(f1.__proto__ == Function.prototype); //true
            // 所以,函数实际上也是对象
            console.dir(f1);
            console.dir(Function);
        </script>

数组的函数调用

<script type="text/javascript">
            var arr = [function() {
                    console.log("我就安静")
                },
                function() {
                    console.log("分啊啊")
                },
                function() {
                    console.log("个恩爱")
                },
                function() {
                    console.log("哈哈哈")
                },
                function() {
                    console.log("还问我")
                }
            ];
            // 回调函数:函数作为参数使用
            arr.forEach(function(ele) {
                ele();
            })
        </script>
上一篇下一篇

猜你喜欢

热点阅读