zoukankan      html  css  js  c++  java
  • js函数的定义

    1.函数声明

    function print(msg){
      console.log(msg);
    }
    print(1);

    被声明的函数不会直接执行。

    它们被“保存供稍后使用”,将在稍后执行,当它们被调用时。

    2.函数表达式

    var x = function (a, b) {return a * b};
    var z = x(4, 3);

    上面的函数实际上是一个匿名函数(没有名称的函数)。

    存放在变量中的函数不需要函数名。他们总是使用变量名调用。

    3.Function() 构造器

    JavaScript 函数是通过 function 关键词定义的。

    函数也可以通过名为 Function() 的内建 JavaScript 函数构造器来定义。

    var myFunction = new Function("a", "b", "return a * b");
    var x = myFunction(4, 3);
    // 等价于
    var myFunction = function (a, b) {return a * b};
    var x = myFunction(4, 3);

    函数提升

    提升是 JavaScript 将声明移动到当前作用域顶端的默认行为。

    提升应用于变量声明和函数声明。

    正因如此,JavaScript 函数能够在声明之前被调用:

    myFunction(5);
    function myFunction(y) {
         return y * y;
    }

    使用表达式定义的函数不会被提升。

    自调用函数

    函数表达式可以作为“自调用”。

    自调用表达式是自动被调用(开始)的,在不进行调用的情况下。

    函数表达式会自动执行,假如表达式后面跟着 ()。

    您无法对函数声明进行自调用。

    您需要在函数周围添加括号,以指示它是一个函数表达式:

    (function () {
        var x = "Hello!!";      //我会调用我自己
    })();

    上面的函数实际上是一个匿名的自调用函数(没有名称的函数)。

    arguments

    function test(a,b){
      consloe.log(test.length) 
      consloe.log(arguments.length) 
    } 
    
    test(1,2,3)
    // 2 获取形参的长度 
    // 3 获取实参的长度
    function test(a,b){
          a=2;
          b=3;
      consloe.log(arguments[0]) 
      consloe.log(arguments[1]) 
    } 
    
    test(1,1,1)
    // 2
    // 3
    
    test(1)
    // 2
    // undefined
    实参没传值,为undefined;给undefined赋值还是undefined

    正常来说,函数外部的;无法识别函数内部的变量;

    反之,越里面的函数,越能识别出本函数内的变量,和外层的局部变量和全局变量。

    函数内部没有声明的变量,可以看成是全局变量(除了函数内存在同名的声明变量)。

  • 相关阅读:
    Linux
    网络
    线程池
    JVM内存结构相关知识
    JVM命令
    maven
    多线程
    AJAX、JSON
    JSP、EL、JSTL
    Mysql面试总结
  • 原文地址:https://www.cnblogs.com/ssszjh/p/14205425.html
Copyright © 2011-2022 走看看