美文网首页
2018-12-14

2018-12-14

作者: 废废_siri | 来源:发表于2018-12-14 21:32 被阅读0次

return

return的作用:
--返回函数的返回值
--跳出当前函数,return后的代码不再被执行(作用域)

<script>
    function counter(){
        for(var i=0;;i++){
            console.log(i+"A");
            if(i===5){
                return;     //return跳出当前函数,当前函数return后的语句不再执行
            }
            console.log(i+"B");
        }
        //先执行完for循环才执行后面的语句
        console.log(i+"C");
    }
    counter()
</script>
<script>
    function test(){
        return function inner(){
            console.log("A");
            return "A+B";
            return("B");
        }
    }

    // console.log(test()());
    var out = test()        //调用test函数,返回值为inner函数,把inner函数的地址值给out变量
    var str = out()        //out调用inner函数,并将其返回值给str变量
    console.log(str);
</script>

作用域

<script>
    //a为全局变量,可以在任意地方使用
    var a=100;
    function test(){
        var a=20;           //a为局部变量,只能在当前函数中使用
        console.log(a);    
        x=50;               //x为全局变量,可以在任何地方使用,但函数被调用时才会被使用,否则,不能被使用 
    }
    test()
    console.log(a)
</script>

函数内部属性this

this指向:
普通调用=函数名()--->this指向window
构造调用=new 构造函数名()--->this指向构造出的实例对象
显示调用=函数名.call(thisArg,参数列表)--->this指向指定的对象
显示调用=函数名.apply(thisArg,数组元素参数列表)--->this指向指定的this值
隐式调用=对象.属性名--->this指向调用的对象
--

函数内部属性arguments

arguments的作用:保存函数的实参。

        function demo(){
            console.log(demo.arguments);    //arguments的作用:保存实参
        }
        demo(1,2,3)
    </script>

--
arguments的callee属性
指向拥有 arguments 对象的函数的指针。
callee的作用:为了消除与函数名的紧密耦合性。

//实现5!
    <script>
        function computed(num){
            if(num<=1){
                return 1;
            }else{
                //return num*computed(num-1);等价于下面的这条语句
                return num*arguments.callee(num-1);     //递归调用
            }
        }
        var res = computed(5)
        console.log(res);
    </script>

函数属性

length--->函数接收参数的个数。
prototype--->函数的原型

<script>
    function demo(a,b,c){

    }
    demo()
    console.log(demo.length);   //demo()函数有3个参数
</script>

函数方法

在函数调用时,可以使用call或apply方法改变this的指向。
call与apply的区别:传参不同。
call(thisAry,参数列表)
apply(thisAry,数组元素参数列表)

 <script>
        function demo(f1,f2){
            var f3 = f1+f2;
            console.log(this,f3);
        }
        var a = demo.call({a:"a"},1,2)
        var b = demo.apply({b:"b"},[2,3])
    </script>

相关文章

网友评论

      本文标题:2018-12-14

      本文链接:https://www.haomeiwen.com/subject/hsrnhqtx.html