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

函数定义javascript

函数语句定义java

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

表达式定义app

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

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

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

 

函数命名规范 spa

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

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

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

 

注:函数声明语句‘被提早到外部脚本或外部函数做用于顶部,因此能够被在它定义以前出现的代码所调用继承

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

 

函数返回值

  • return语句返回函数的值给调用者。
  • return语句没有,则它返回undefined

 

嵌套函数

  • 嵌套函数能够访问他们的函数的参数和变量
  • 可是嵌套函数不能出如今循环、条件判断,或者try/cache/finally/with语句中

函数调用

  • 做为函数
  • 做为方法
  • 做为构造函数
  • 经过他们的call()和apply()方法间接调用

做为函数调用

add(1,2)

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

 1 //定义一个函数且调用一个函数来肯定当前脚本运行是否为严格模式

2 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()
相关文章
相关标签/搜索