视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
JavaScript函数的定义、调用以及该注意的问题
2020-11-27 20:23:03 责编:小采
文档

这篇文章主要介绍了JavaScript 函数的定义-调用、注意事项,需要的朋友可以参考下

函数定义

函数语句定义

表达式定义

//函数表达式可以包含名称,这在递归时很有用 var f = function fact(x){ if(x<=1) {return 1; }else { return x*faxt(x-1); } }

以表达式方式定义的函数,函数的名称是可选的。如果函数定义表达式包含名称,函数的局部作用域将会包含一个绑定到函数对象的名称,实际上,函数的名称将成为函数内部的一个局部变量

函数命名规范

1.like_this()第一个字符为小写,当包含多个单词时候,单词以下划线分割

2.likeThis()第一个字符为小写,当包含多个单词时候,除第一个单词以外的单词首字母使用大学字母

3.内部函数或私有函数,通常以一条下划线为前缀

注:函数声明语句‘被提前到外部脚本或外部函数作用于顶部,所以可以被在它定义之前出现的代码所调用

以表达式方式定义函数前必须把它赋值给一个变量。所以表达式方式定义的函数在定义之前是无法调用的

函数返回值

  • return语句返回函数的值给调用者。

  • return语句没有,则它返回undefined

  • 嵌套函数

  • 嵌套函数可以访问他们的函数的参数和变量

  • 但是嵌套函数不能出现在循环、条件判断,或者try/cache/finally/with语句中

  • 函数调用

  • 作为函数

  • 作为方法

  • 作为构造函数

  • 通过他们的call()和apply()方法间接调用

  • 作为函数调用

    add(1,2)

     根据ECMAScript3和非严格的ECMAScript5对函数调用的规定,调用上下文(this的值)是全局对象。然而在严格模式下,调用上下文则是undefined。

    //定义一个函数且调用一个函数来确定当前脚本运行是否为严格模式
    var strict = (function(){return this;}());

    作为方法调用

    方法调用和函数调用的一个重大区别。----调用上下文

    o.add() add的调用上下文为o,即:this
    o.add() 等同于o['add']()
    方法链:当方法并不需要返回值时候,最好直接返回this
    this为一个关键字,不是变量,也不是属性名。JavaScript语法不允许给this赋值
    和变量不同,关键字this没有作用于的,嵌套的函数不会从调用它的函数中继承this,如果想访问外部函数的this,var self= this;保存在变量中
    如果嵌套函数作为函数调用,其this的值指向调用它的对象。如果作为函数调用,this不是全局对象(非严格模式),就是undefined(严格模式)

    构造函数调用

    构造函数调用和普通函数调用以及方法调用在实参处理。调用上下文和返回值等方面都有不同。

    凡是没有形参的构造函数调用都可以省略圆括号。

    构造函数调用创建一个新的空对象,这个对象继承自构造函数的prototype属性,这个函数试图初始化这个新创建的对象,病将这个对象做为上下文,因此构造函数可以使用this关键字来引用这个新创建的对象。

    new o.m() 调用的上下文并不是o.
    构造函数并不使用return。如果构造函数显示的使用return语句返回一个对象,那么调用表达式的值就是这个对象。如果构造函数但并没有返回值,或者返回一个原始值,那么就会忽略返回值,同时使用新对象作为返回结果。

    间接调用

    call()
    appy()

    下载本文
    显示全文
    专题