javascript中的函数
来源:互联网 发布:应变数据采集仪 编辑:程序博客网 时间:2024/06/07 13:54
一·函数的定义
function关键字, 函数名称标识符,一对圆括号,一对花括号。
function add(x,y){ return x+y;}var sub=function(x,y){ return x-y;}var ten=(function(x){ return x*x;}(10));//函数表达式定义后立即执行alert(ten);//100
二·函数的调用
1.函数调用
var a=add(2,1);//a=3var b=sub(2,1);//b=1
当函数中没有return语句 或return语句没有值,则返回undefined。
函数调用通常不使用this。
函数调用通常不使用this。
2.方法调用
方法调用由两部分组成:一个对象和函数。对象成为调用上下文,函数体中可以使用this引用该对象。
var cal={//对象直接量 x:1, y:2, add:function(){ return [this.x+this.y,this===cal];//this代指当前对象 }};cal.add();//[3,true]this为关键字,不是变量,不是属性名。嵌套函数不可以使用外层函数中的this,但可以使用外层函数中的变量。
var obj={ a:1, met:function(){ var self=this; f(); function f(){ console.log(self.a);//1 console.log(this.a);//undefined } }};obj.met();
扩展:方法链:当方法的返回值为一个对象,这个对象还可以再调用它的方法。
3.构造函数调用
特点:使用new关键字。
function F(name){ this.name=name; this.sayHello=function(){ console.log("Hello world!"); }}var a = new F();a.sayHello();
4.间接调用
call()和apply()可以用来间接地调用函数。都允许显示制定调用所需的this。
任何函数可以用作任何对象的方法来调用,即使该函数不是该对象的方法。
三·实参对象
在函数体内,标识符arguments指向实参对象的引用,实参对象是一个类数组对象,可以通过数组下标就能访问实参值。
function max(){ var max=arguments[0]; for(var i=1;i<arguments.length;i++) arguments[i]>max?max=arguments[i]:max; return max;}console.log(max(1,2,40,99));//99
四·将函数用作值
function add(x,y){ return x+y;}function sub(x,y){ return x-y;}//某个函数为参数,并传入两个操作数function operate(f,a,b){ return f(a,b);}var i=operate(add,operate(add,1,2),operate(sub,2,1));//4
五·闭包
个人理解:即返回嵌套函数。
每次调用javascript函数时,都会为之创建一个新对象保存局部变量,将该对象添加至作用域链。当函数执行完,从作用域链中将该对象回收。var a="global a";function checka(){ var a="local a"; function f(){ return a; } f();}console.log(checka());//undefined将函数作为返回值。此时有一个外部引用指向嵌套函数,它不会被当做垃圾回收,它所指向的变量绑定对象也不会。
var a="global a";function checka(){ var a="local a"; function f(){ return a; } return f();}console.log(checka());//local a
六·函数方法和构造函数
call()方法,apply()方法,bind()方法。
call()方法和apply()方法:将一个对象中的方法放至另一个对象中执行。
var obja={ add:function(x,y){return x+y;}};var objb={};var c=obja.add.call(objb,1,2);//3var d=obja.add.apply(objb,[2,3]);//5。参数放入数组中传递bind()方法:将函数绑定至某个对象上。
function f(y){return this.x+y;}var obj={x:1};var g=f.bind(obj);g(2);//3。this.x绑定到1,y绑定到2
构造函数:
下面等价
var add=Function("x","y","return x+y;");var add=function(x,y){return x+y;}
以上纯属自己的一些理解,希望能够给部分人一些帮助。
由于本人造化尚浅,望大神们勿喷。
阅读全文
0 0
- javascript中的字符串函数
- Javascript中的IsNumeric函数
- JavaScript中的循环函数
- JavaScript中的函数
- javascript中的parseInt函数
- javascript中的函数功能
- javascript中的sleep函数
- JavaScript中的escape() 函数
- JavaScript中的函数
- javascript中的函数
- JavaScript中的Trim函数
- javascript中的replace()函数
- javascript中的eval函数
- javascript 中的内置函数
- javascript 中的常用函数
- Javascript中的eval函数
- javascript中的函数
- javascript中的匿名函数
- arguments.callee使用
- MyBatis Generator 自动化生成代码工具
- sprintf的用法
- C语言(Head First C)-8:高级函数:函数指针 qsort() 可变参数函数
- 自学编程之路——位运算
- javascript中的函数
- 屏蔽鼠标右键
- 下载文件的一种简单方法js
- ubuntu动态链接库连接出错 cannot open shared object file: No such file or directory
- iOS开发之同一应用设置不同图标和名称
- ECLIPSE/JAVAWEB (一)三大框架之STRUTS框架 持续更新中...
- beego
- Cocos2d-x里面如何实现MVC(三)
- 生成验证码的工具类和使用的servlet