JS函数

作者: 遠_ | 来源:发表于2018-05-18 20:55 被阅读0次

函数的声明

    (1) function命令

        function命令声明的代码区块,就是一个函数。function命令后面是函数名,函数名后面是一对圆括号,里面是传入函数的参数。函数体放在大括号里面。

function  print (s){

console.log(s);

}

上面的代码命名了一个print函数,以后使用print()这种形式,就可以调用相应的代码。这叫做函数的声明

尽量多用call调用函数。


函数的重复声明

    如果同一个函数被多次声明,后面的声明就会覆盖前面的声明。

        function f () {

            console.log(1);

        }

    f()  // 2

        function f () { 

            console.log(2); 

        }

    f()  //  2

上面的代码,后一次的函数声明覆盖了前面一次。而且,由于函数名的提升,前一次声明在任何时候都是无效的。


圆括号运算符,return 语句和递归

    调用函数时,要使用圆括号运算符。圆括号之中,可以加入函数的参数。

    函数体内部的return语句,表示返回。遇到return语句,就直接返回return后面的那个表达式的值,后面即使还有语句,也不会得到执行。也就是说,return语句所带的那个表达式,就是函数的返回值。return语句不是必需的,如果没有的话,该函数就不返回任何值,或者说返回undefined。

    函数可以调用自身,这就是递归。


函数的属性和方法

    (1) name 属性

        函数的name属性返回函数的名字。

            functionf1(){}

            f1.name  //   "f1"

        如果是通过变量赋值定义的函数,那么name属性返回变量名。

            var f2 = function () {}; 

            f2.name //  "f2"    

如果变量的值是一个具名函数,那么name属性返回function关键字之后的那个函数名。

                var f3 = function myName () {};

                f3.name //  'myName'

    (2) length 属性

        函数的length属性返回函数预期传入的参数个数,即函数定义之中的参数个数。

            function f (a,b) {} 

            f.length  //   2

    (3) toString()

        函数的toString方法返回一个字符串,内容是函数的源码。


函数作用域

    作用域(scope)指的是变量存在的范围。

    Javascript 只有两种作用域:一种是全局作用域,变量在整个程序中一直存在,所有地方都可以读取;另一种是函数作用域,变量只在函数内部存在。

函数内部可以直接读取全局变量。但是,函数外部无法读取函数内部声明的变量。

函数内部定义的变量,会在该作用域内覆盖同名全局变量。


eval 命令

    eval命令的作用是,将字符串当作语句执行。

        eval ('var a = 1;');

        a // 1

eval内部声明的变量,不会影响到外部作用域。


this 和 arguments

f.call(asThis, input1,input2)

其中 asThis 会被当做 this,[input1,input2] 会被当做 arguments

    this: 就是call的第一个参数可以用this得到。

    aeguments: 就是call的后面参数可以用arguments得到。


闭包

    概念:如果一个函数,使用了它范围外的变量,那么(这个函数+变量)就叫做闭包。

相关文章

网友评论

      本文标题:JS函数

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