zoukankan      html  css  js  c++  java
  • js-权威指南学习笔记8

    第8章 函数

    1、参数有形参实参的区别,形参相当于函数中定义的变量,实参是在运行时的函数调用时传入的参数。

    2、函数表达式可以包含名称,这在递归时很有用。

    3、函数定义表达式特别适合用来定义那些只会用到一次的函数,比如sort()方法或立即执行函数等。

    4、函数声明语句被提前到外部脚本或外部函数作用域的顶部,所以以这种方式声明的函数,可以被在它定义之前出现的代码所调用。不过,以函数表达式定义的函数必须要能引用他,所以必须把它赋值给一个变量,这个变量的声明被提前,但给变量赋值是不会提前的,所以表达式方式定义的函数在定义之前无法调用。

    5、return语句导致函数停止执行,并返回它的表达式的值给调用者。如果return语句没有与之相关的表达式或者没有return语句,那么返回undefined给调用者。

    6、函数声明语句并非真正的语句。它们可以出现在全局代码里或者内嵌在其他函数中,但不能出现在循环、条件判断,或者try/catch/finally以及with语句中

    7、有四种方式来调用JS函数作为函数作为方法作为构造函数、通过它们的call()和apply()方法间接调用

    8、作为函数调用时,调用上下文,即this的值是全局对象,在严格模式下,调用上下文是undefined。以函数形式调用的函数通常不使用this关键字,不过可以用this来判断是否是严格模式

    9、当方法不需要返回值时,最好直接返回this,方便链式调用

    10、关键字this没有作用域的限制,嵌套的函数不会从调用它的函数中继承this。如果嵌套函数作为方法调用,其this值指向调用它的对象。如果嵌套函数作为函数调用,其this值不是全局对象就是undefined。见8.

    11、如果函数或者方法调用之前带有关键字new,它就构成构造函数调用。

    12、构造函数试图初始化新创建的对象,并将这个对象用做其调用上下文,因此构造函数可以使用this关键字来引用这个新创建的对象。

    13、使用call()和apply()实现函数的间接调用。两个方法都允许显式地指定调用所需的this值,也就是说,任何函数可以作为任何对象的方法来调用,哪怕这个函数不是那个对象的方法。call()方法方法使用自有的实参列表作为函数的实参,apply()方法要求以数组的形式传入参数,可以将当前函数的arguments数组直接传入另一个函数的apply来调用另一个函数

    14、当调用函数的时候传入的实参比函数声明时指定的形参个数要少,剩下的形参都将设置为undefined值

    15、可以在函数定义中使用注释/*optional*/来强调形参是可选的

    16、标识符arguments是指向实参对象的引用,实参对象是一个类数组对象,并不是真正的数组,它是一个对象,碰巧具有以数字为索引的属性。

    17、实参对象还定义了callee和caller属性。callee属性指代当前正在执行的函数caller指代调用当前正在执行的函数的函数

    18、将对象用作实参,调用函数的时候传入一个对象,不必再去记住实参的顺序。

    19、函数的length属性是只读属性,代表函数形参的数量,也就是在函数定义时给出的参数个数,通常也是在函数调用时期望传入函数的实参个数。

    20、Function()构造函数所创建的函数并不是使用词法作用域,相反,函数体代码的编译总是会在顶层函数(全局作用域)执行

  • 相关阅读:
    SQL 操作结果集 -并集、差集、交集、结果集排序
    MongoDB系列四:解决secondary的读操作
    org.apache.hadoop.ipc.RemoteException: User: root is not allowed to impersonate root
    hive 中窗口函数row_number,rank,dense_ran,ntile分析函数的用法
    FormData上传文件同时附带其他参数
    Hive删除分区
    Hive日期格式转换用法
    HIVE 不支持group by 别名
    ODS与EDW的区别
    hive数据类型转换、字符串函数、条件判断
  • 原文地址:https://www.cnblogs.com/zczhangcui/p/6279458.html
Copyright © 2011-2022 走看看