`
pouyang
  • 浏览: 321603 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JavaScript语言精粹 函数

阅读更多
所有的过失在未犯以前,都已定下应处的惩罚


JavaScript中最好的特性就是它对函数的实现,它几乎无所不能,但是,想必你也能
预料到,函数在JavaScript里也并非万能药。

函数包含一组语句,它们是JavaScript的基础模块单元,用于代码复用,信息隐藏和组合调用函数用语指定对象的行为,一般来说,所谓编程就是将一组需求分解成一组
函数与函数结构的技能。


函数字面量

函数对象可以通过函数字面量来创建

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

var myObject = {
	value:0;
	increment:function(inc) {
		this.value += typeof inc == 'number' ? inc : 1;
	}
}
myObject.increment();
document.writeln(myObject.value); //1

myObject.increment(2);
document.writeln(myObject.vale); // 3


每个函数对象在创建时也附带有一个prototype属性,它的值是一个拥有
constructor属性且值即为该函数的对象

调用运算符是跟在任何产生一个函数值的表达式之后的一对圆括号。圆括号内可包含零个或
多个用逗号隔开的表达式,每个表达式产生一个参数值,每个参数值被赋予函数声明时定义的
形式参数名。当实际参数(arguments)的个数与形式参数(parameters)的个数不匹配时不会导致
运行时错误。如果实际参数值过多了,超出的参数值将被忽略。如果实际参数值过少,缺失的值将会被替换为
undefined。对参数值不会进行类型检查,任何类型的值得都可以被传递给参数。


new 前缀调用的函数被称为构造器函数。按照约定,它们保存在以大写格式命名的变量里。


参数
当函数被调用时,会得到一个免费的奉送的参数,那就是arguments数组,通过它函数可以访问所有它被调用时传递给它的参数列表,包括那些没有分配给函数声明定义的形式参数的多余参数这就使得编写一个无须指定参数个数的函数成为可能
<script language="javascript" type="text/javascript">
	 var sum  = function(){
  		var i ,sum =0;
		for (i = 0; i < arguments.length;i++) {
			sum += arguments[i];
		}
		return sum;
 	};
 alert(sum(12,8));// 20


因为语言的一个设计错误,arguments并不是一个真正的数组。它只是一个“类似数组”的对象。 arguments拥有一个length属性,但它缺少所有数组方法。

函数返回值

一个函数总是会返回一个值。如果没有指定返回值,则返回"undefined".
如果函数以在前面加上new前缀的方式来调用,且返回不是一个对象
则返回this( 该新对象)


      
  function a() {
	  document.writeln("a");
	}
	
	alert(a()); // undefined
	alert(new a()); //[object Object]


	 var bb = function a () {
 		alert("bb");
	  }();  // 注意()alert("bb");

	  function a() {
		alert("bb");
	  }();   // 错误


函数异常

JavaScript提供一套异常处理机制


<script   language="javascript"  type="text/javascript">
var add = function(a,b) {
   if (typeof a != 'number'|| typeof b!= 'number') {
   		throw {
			name :'TypeError',
			message:'add needs numbers'
		};
		return a+ b;
   }
}
var  try_it = function () {
 try {
 	add('seven');
 }catch (e) {
    document.writeln(e.name+':'+e.message)
 }
} 
try_it(); // add needs number
</script>

如果在try代码块内抛出一个异常,控制权就会跳转到它的catch从句
一个try语句代码块只会有一个将捕获所有异常的catch代码块。如果你的处理手段
取决于异常类型,那么异常处理器必须检查异常对象的name属性以确定异常的类型。


闭包

var myObject = function () {
	var value = 0;
	return {
		increment:function (inc) {
			value += typeof inc =='number'?inc:1;
		},
		getValue:function () {
			return value;
		}
	}
}();// 注意这里


注意最后一行(常常看到别人的代码),我们并没有把一个函数赋值给myObject,我们是把调用该函数后返回的结果赋值给它。注意作后一行();该函数返回一个包含两个方法的对象,并且这些方法继承享有访问value变量的特权。
var quo = function (status) {
	return {
		get_status:function () {
			return status;
		}
	};
}
var myQuo = quo ("amazed") ;
alert(myQuo.get_status());//amazed

这个quo函数被设计成无须在前面加上new来使用,所以名字也没有首字母大写,
当我们调用quo时,它返回包含get_status方法的一个新对象,该对象的一个引用保存在myQuo中,
即使quo已经返回了,但get_status方法仍然享有访问quo对象的status属性的特权。get_status方法并不是
访问该参数的一个拷贝,它访问的就是该参数本身,这是可能因为该函数可以访问
它被创建时所处的上下文环境。这就被称为闭包。




回调
模块
级联
套用
记忆
分享到:
评论

相关推荐

    JavaScript语言精粹完整版

    《JavaScript语言精粹》作为一本深入浅出讲解JavaScript编程语言的经典之作,对于想要提升自己JavaScript技能的开发者来说,无疑是一份宝贵的资源。本书由Douglas Crockford所著,他不仅是JSON格式的创始人,也是...

    javascript语言精粹 pdf

    《JavaScript语言精粹》是JavaScript开发者必读的经典之作,它深入浅出地讲解了JavaScript语言的核心概念和实用技巧。这本书不仅适合初学者作为入门指南,也适合经验丰富的开发者用来巩固和提升自己的技能。 首先,...

    JavaScript语言精粹 pdf

    《JavaScript语言精粹》作为一本经典的编程书籍,深入浅出地介绍了JavaScript这门语言的核心概念和技术要点,是每一个前端开发者乃至后端工程师都不容错过的读物。这本书由Douglas Crockford所著,他不仅是...

    JavaScript 语言精粹

    此外,《JavaScript语言精粹》还会深入讨论作用域、变量提升、this关键字、事件处理、DOM操作以及异步编程,如回调函数、Promise和async/await。这些知识点对于前端开发人员来说至关重要,因为它们直接影响到网页的...

    《JavaScript语言精粹》.pdf

    《JavaScript语言精粹》这本书是深入理解这一语言的宝贵资源,它涵盖了JavaScript的核心概念和技术,旨在帮助读者掌握这门语言的精髓。 在描述中提到的"JavaScript语言精粹 包含pdf 与 epub"表明,这本书提供了两种...

    JavaScript语言精粹(翻译版+英文版)

    《JavaScript语言精粹》是一本深入探讨此语言核心概念和技术的书籍,分为翻译版和英文原版,为开发者提供了全面而深入的学习资源。 翻译版是以.pdf格式呈现,包含了详细的目录,方便读者快速定位和查阅所需内容。这...

    JavaScript语言精粹pdf

    《JavaScript语言精粹》是一本深受开发者喜爱的经典书籍,它深入浅出地讲解了JavaScript的核心概念和最佳实践。这本书的中文高清PDF版本包含了详细的注解和书签,为读者提供了便利的学习路径。作为标签,"JavaScript...

    《JavaScript语言精粹》PDF高清扫描版

    根据提供的文件信息,我们可以推断出这是一本关于JavaScript编程语言的专业书籍——《JavaScript语言精粹》,该书提供了PDF高清扫描版本。接下来,我们将从以下几个方面深入探讨与这本书相关的知识点: ### 一、...

    JavaScript语言精粹 中文高清PDF

    《JavaScript语言精粹》是一本深受开发者欢迎的权威书籍,旨在深入探讨JavaScript这门重要的编程语言,帮助初学者和有经验的程序员掌握其核心概念和最佳实践。这本书以中文高清PDF的形式提供,使得读者可以方便地...

    JavaScript语言精粹.pdf.zip

    这本书《JavaScript语言精粹》无疑是深入理解和掌握这门语言的重要参考资料。它旨在帮助开发者掌握JavaScript的核心概念,提高编程技能,并理解如何写出高效、可维护的代码。 《JavaScript语言精粹》可能会涵盖以下...

    JavaScript语言精粹.修订版 Javascript:The Good Parts 中英 pdf

    《JavaScript语言精粹》修订版还涵盖了JavaScript的最新发展,例如ES6及后续版本的新特性,如箭头函数、类、模板字符串、解构赋值等。此外,Douglas Crockford对语言中的一些"坏部分"(如with关键字和全局变量)进行...

    JavaScript语言精粹(修订版),源码

    JavaScript语言精粹(修订版)是一本深入探讨JavaScript编程技巧和最佳实践的书籍,源码则是作者为了配合书中的讲解而提供的实际代码示例。这些示例代码旨在帮助读者更好地理解JavaScript的核心概念,提高编程技能,...

    JavaScript语言精粹(高清电子版)和高性能JavaScript 双语版

    本文将深入探讨标题和描述中提及的两本书籍《JavaScript语言精粹》和《高性能JavaScript》所涵盖的知识点。 首先,我们来关注《JavaScript语言精粹》。这本书主要侧重于JavaScript的核心概念和最佳实践,旨在帮助...

    JavaScript语言精粹 修订版 中文高清PDF

    《JavaScript语言精粹 修订版》是一本深受前端开发者喜爱的经典教材,专注于讲解JavaScript的核心概念和最佳实践。这本书深入浅出地介绍了JavaScript的精髓,帮助读者掌握这门强大的脚本语言,尤其对于前端开发人员...

    JavaScript语言精粹(修订版)

    "JavaScript语言精粹(修订版)"是一本深入探讨JavaScript编程精髓的书籍,旨在帮助开发者掌握其核心概念、最佳实践以及常见陷阱。这本书对初学者和经验丰富的开发者都具有很高的价值,能够提升对JavaScript的理解和...

Global site tag (gtag.js) - Google Analytics