• javaScript 函数


    今天在看《javaScript学习指南》函数章节,设计知识点大概归纳如下:

    1.创建函数方法:

      a: 声明式(静态式),即使用function关键字,接着是函数体

    1 function sayHi(toWhom){
    2     alert("Hi"+toWhom);
    3 }
    4 alert(sayHi("Hello world!"));

    调用该函数将弹出一个对话框,显示"Hi Hello world!"

        b:匿名函数:通过函数构造器创建一个新的函数, 其函数体将作为参数传给这个函数构造器, 函数本身不需要声明。

    var sayHi = new Function("toWhom", "alert('Hi' + toWhom);")
    sayHi("Hello World!");

    当JavaScript解析它时会动态创建一个匿名函数,调用之后,函数会被自动删除。(当在一个循环中调用时,意味着每循环一次就创建一次,不过对于定义一个在运行时才确定需求的函数是一个好方法)

    var func = new Function("x", "y", "return x*y")
    #等价于
    function func(x, y){
        return x*y;        
    }

        c:函数字面量(函数表达式),和匿名函数有些类似都没有定义函数名称,区别在于该方式只会被解析一次。和声明式相比只是将函数赋给一个变量

    var func = function(x, y){
        return x*y;    
    }
    alert(func(3, 4));

    当想实现一个函数作为一个函数的参数时该方式就比较方便。

    function functionObject(x, y , z){
        alert(z(x, y));    
    }
    functionObject(3, 4, function(x, xy){return x* y;})

    2.函数返回值和参数

      参数的变量传给函数的实际上是原始值, 如一个字符串, 一个布尔值, 一个数字等,如果在函数中修改实际参数值,是不会影响调用程序的。但对于传给函数的对象而言传递的则是一个引用,在函数中对这个对象的修改会反映到调用程序中。

    function alterArgs(strLiteral, aryObject){
        strLiteral = "Override";
        aryObject[1] = "2";            
    }
    
    var str = "original";
    var ary = new Array("one", "two");
    
    alterArgs(str, ary);
    
    #########
    original
    one 2

    3 回调函数, 函数以类似filter, forEach, every, map, some以及用函数字面量形式使用。

    4 函数作用域:

      a.在一个函数中定义变量使用var关键字,则该变量作用域为局部,只在函数体中使用,函数体外则是未定义

          b.在函数体外变量未使用var关键字,则是全局

  • 相关阅读:
    可持久化BCJ
    Codeforces 911 三循环数覆盖问题 逆序对数结论题 栈操作模拟
    找不同
    最接近的三数之和
    找到所有数组中消失的数字
    三数之和
    小程序中的变量
    二叉树的最近公共祖先
    深拷贝和浅拷贝
    下载安装JDK
  • 原文地址:https://www.cnblogs.com/gcm688/p/5211234.html
Copyright © 2020-2023  润新知