这里有新鲜出炉的 Javascript 教程,程序狗速度看过来!
Javascript 是一种由 Netscape 的 LiveScript 发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如 Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
这篇文章主要介绍了 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. 内部函数或私有函数,通常以一条下划线为前缀
注:函数声明语句'被提前到外部脚本或外部函数作用于顶部,所以可以被在它定义之前出现的代码所调用
以表达式方式定义函数前必须把它赋值给一个变量。所以表达式方式定义的函数在定义之前是无法调用的
函数返回值
嵌套函数
函数调用
作为函数调用
- 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()
来源: http://www.phperz.com/article/17/0525/334031.html