JavaScript 函数的定义-调用、注意事项

 更新时间:2017年04月16日 07:58:08   投稿:mdxy-dxy  
这篇文章主要介绍了JavaScript 函数的定义-调用、注意事项,需要的朋友可以参考下

函数定义

函数语句定义

function(a,b){
 return a+b; 
}

表达式定义

var add = function(a,b){return a+b};

//函数表达式可以包含名称,这在递归时很有用 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;}());

作为方法调用

var o = {
 m:1,
 n:2,
 add:function(){
  this.result = this.m+this.n;
  }
}

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

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

构造函数调用

var o = new Object();

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

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

var o = new Object();
var o = new Object;
//等价

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

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

间接调用

call()
appy()

相关文章

  • 微信小程序自定义select下拉选项框的方法

    微信小程序自定义select下拉选项框的方法

    这篇文章主要为大家详细介绍了微信小程序自定义select下拉选项框的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • JavaScript实现京东秒杀效果

    JavaScript实现京东秒杀效果

    这篇文章主要为大家详细介绍了JavaScript实现京东秒杀效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • canvas绘制七巧板

    canvas绘制七巧板

    本文主要分享了canvas绘制七巧板的示例代码。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • JavaScript分秒倒计时器实现方法

    JavaScript分秒倒计时器实现方法

    这篇文章主要介绍了JavaScript分秒倒计时器实现方法,可实现按照毫秒倒计时的效果,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02
  • JSON常用解析框架使用操作详解

    JSON常用解析框架使用操作详解

    这篇文章主要为大家介绍了JSON常用解析框架使用操作详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • JavaScript实现复制内容到粘贴板代码

    JavaScript实现复制内容到粘贴板代码

    最近做了一个前端项目,其中有需求:通过button直接把input或者textarea里的值复制到粘贴板里。下面小编给大家分享JavaScript实现复制内容到粘贴板代码,需要的朋友参考下
    2016-03-03
  • 学习JavaScript编程语言的8张思维导图分享

    学习JavaScript编程语言的8张思维导图分享

    这篇文章主要介绍了学习JavaScript编程语言的8张思维导图分享,本文给出了javascript变量、javascript运算符、javascript数组、javascript流程语句、javascript字符串函数、javascript函数基础、javascript基础DOM操作、javascript正则表达式的思维导图,需要的可以参考下
    2015-03-03
  • js实现搜索框关键字智能匹配代码

    js实现搜索框关键字智能匹配代码

    这篇文章主要为大家分享了js实现搜索框关键字智能匹配代码,感兴趣的朋友可以参考一下
    2016-01-01
  • JavaScript跨域方法汇总

    JavaScript跨域方法汇总

    这篇文章主要介绍了JavaScript跨域方法汇总,本文总结了12种JavaScript的跨域方法,需要的朋友可以参考下
    2014-10-10
  • js动态添加表格数据使用insertRow和insertCell实现

    js动态添加表格数据使用insertRow和insertCell实现

    这篇文章主要介绍了js动态添加表格数据并使用insertRow和insertCell实现,需要的朋友可以参考下
    2014-05-05

最新评论