函数定义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
注:函数声明语句‘被提早到外部脚本或外部函数做用于顶部,因此能够被在它定义以前出现的代码所调用继承
以表达式方式定义函数前必须把它赋值给一个变量。因此表达式方式定义的函数在定义以前是没法调用的
函数返回值
嵌套函数
函数调用
做为函数调用
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; } }
方法调用和函数调用的一个重大区别。----调用上下文
构造函数调用
var o = new Object();
构造函数调用和普通函数调用以及方法调用在实参处理。调用上下文和返回值等方面都有不一样。
凡是没有形参的构造函数调用均可以省略圆括号。
var o = new Object(); var o = new Object; //等价
构造函数调用建立一个新的空对象,这个对象继承自构造函数的prototype属性,这个函数试图初始化这个新建立的对象,病将这个对象作为上下文,所以构造函数可使用this关键字来引用这个新建立的对象。
间接调用