函数知多少(二)

媒介

上次聊了关于定义函数的学问,另有参数方面的,此次先补充一点参数小学问,另有简朴的讲一下闭包。

arguments对象

引入的参数会保存在arguments数组对象中,第一个引入的参数保存在aruguments[0]中,以此类推,拜见以下代码:

var myArr = ["hangzhou", "shanghai", "beijing", "guangzhou"];
function foo(obj) {
    console.log(arguments[0]);//["hangzhou", "shanghai", "beijing", "guangzhou"];
    console.log(arguments[0][1]);//shanghai
}
foo(myArr);

闭包

function outside(x) {
    function inside(y) {
        return x + y;
    }
    return inside;
}

fun_inside = outside(5);
console.log(fun_inside);
result = fun_inside(3);//return 8
result1= outside(5)(3);//return 8

我们都晓得,函数内部是能够读取外部定义的变量的。在这里,outside函数包含了一个内部函数inside,所以inside能够运用outside引入的参数。我们把函数inside作为返回值赋给fun_inside,固然,同时返回的另有x。此时我们再实行fun_inside而且传入一个y就可以返回二者之和,末了一行只是把两个参数同时传入,其他无异,这就是一个很简朴的闭包。
下面是实行这段代码后监视窗的效果。
《函数知多少(二)》
更深切的下一期再讲,由于作者也正在进修啦~~

课后题?

var myArr = ["hangzhou", "shanghai", "beijing", "guangzhou"];
console.log(myArr);//["hangzhou", "shanghai", "beijing", "guangzhou"]
console.log("test:" + myArr);//test:hangzhou,shanghai,beijing,guangzhou

为何输出内容会差别呢?作者到现在也不解,不过对顺序运转是没有影响的。有大神懂的话,求指点???

    原文作者:BingqiChen
    原文地址: https://segmentfault.com/a/1190000004098421
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞