【Web】JAVAScript之函数
来源:互联网 发布:帝国竞争算法程序 编辑:程序博客网 时间:2024/06/10 16:32
一.函数
函数是一个对象,所以JS函数可以像其他对象那样操作和传递,所以我们也常叫JS中的函数为函数对象。
函数返回值是依赖于return语句.
对于一般的函数,若没有return语句,默认返回undefined。
若作为构造器,外部使用new去调用,则返回this,反之,若return一个对象,便将这个对象作为new操作的返回值。
二.函数不同的调用方式
1.直接调用 foo();
2.对象方法 o.method();
3.构造器 new Foo();
4.call/apply/bind func.call(o);
三.创建函数的方式
1.函数声明
function add(a,b){...}
2.函数表达式
//方式一var add=function(a,b){};//方式二:立即执行函数表达式(function(){})();//方式三return function(){}//方式四:命名式函数表达式var add=function foo(a,b){}
两者比较
函数声明会被前置,在声明的位置前面调用依然可以成功。可是在函数表达式位置前调用则不会成功。
函数表达式中只有变量的声明会提前,后面的函数的创建只有在执行时才会被赋值。
3.Function构造器
//前两个参数表示函数对象的形参,第三个参数表示函数体里的代码,是字符串。var func=new Function('a','b','console.log(a+b);');func(1,2);var func= Function('a','b','console.log(a+b);');func(1,2);
三者比较:
四.this介绍
1.全局作用下的this
console.log(this.document===document)//trueconsole.log(this===window);//truethis.a=37;//相当于创建了一个全局变量a并赋值3为37console.log(window.a);//37
2.一般函数的this
function f1(){return this;//仍然指向window}f1()===window;//true
3.作为对象方法的函数的this(常用)
var o={ prop:37, f:function(){ return this.prop;}};console.log(o.f())//37 this指向了对象o
与函数的创建无关,只要将函数作为对象的方法去调用,那么this就会指向该方法。
4.对象原型链上的this
var o={f:function(){return this.a+this.b}}//this可以拿到原型链上和对象本身的变量var p=Object.create(o);//对象P是一个空对象原型指向op.a=1;p.b=4;console.log(p.f());//5
5.构造器中的this
function Myclass(){this.a=37;}var o=new Myclass();//this指向空的对象,且this的原型指向MyClass.prototypeconsole.log(o.a);//37
6.call/apply方法中的this
function add(c,d){return this.a+this.b+c+d;}var o={a:1,b:3};add.call(o,5,7);//1+3+5+7=16,第一个参数是想要作为this的对象add.apply(o,[5,7]);//16
function bar(){console.log(Object.prototype.toString.call(this));}bar.call(7);//"[object Number]"
五.函数属性&arguments
function foo(x,y,z){arguments.length;//2 实际传参的对象arguments[0];//1arguments[0]=10;x;//10 严格模式下,仍然是1arguments[2]=100;z;//undefined!!! 未传入参数,则将失去绑定关系。arguments.callee===foo;//true}foo.name;//foofoo.length;//3 形参个数foo(1,2);
argument是类数组的对象,原型并不指向Array.prototype,因此没有数组对象的方法。
0 0
- 【Web】JAVAScript之函数
- web前端之JavaScript高级程序设计四:函数表达式
- Web基础之Javascript
- web前端之javascript
- Web之Javascript基础
- JavaScript之web通信
- WEB程序设计之javascript
- JavaScript之web通信
- 玩转Web之JavaScript(四)-----javaScript语法总结(四) JS中的函数
- JavaScript之函数应用
- javascript基础之函数。
- JavaScript之构造函数
- Javascript之函数定义
- JavaScript之函数
- javascript之函数
- JavaScript规范之函数
- 柯里化函数之Javascript
- javaScript之函数
- CPU的结构
- matlab自带函数实现BP神经网络
- CSU
- Vuejs2 + Webpack框架里,模拟下载的实现方法
- jffs2文件系统镜像挂载到Ubuntu
- 【Web】JAVAScript之函数
- Go 语言开发环境(Sublime Text+GoSublime)的配置
- HDU1839
- vs2015中文专业版激活秘钥
- FFmpeg
- 算法——排序
- W3C Schema复杂类型一
- ZOJ 3254
- HDU 5692 Snacks (dfs序+线段树)好题!