准备写下一系列javascript入门的文章,一方面算是自己对javascript知识的稳固,一方面也希望对初学javascript的朋友有所帮助。javascript的基本类型和语法其实跟java是非常相似的,对于javaeye的朋友我想都清楚,今天就从javascript的函数写起:
1、js函数声明:
function fun1(arg){
alert(arg+",This is my first js function !"); }
var fun2 = new Function("arg","alert(arg);");
//尽管可用Function构造函数创建函数,但最好不要使用它,因为它比第一种传统方式定义函数要慢得多!
//不过所有函数都应该看作为是Function类的实例! fun1("Jesen"); fun2("Jesen");
function fun1(arg){
alert(arg+",This is my first js function !"); }
var fun2 = new Function("arg","alert(arg);");
//尽管可用Function构造函数创建函数,但最好不要使用它,因为它比第一种传统方式定义函数要慢得多!
//不过所有函数都应该看作为是Function类的实例! fun1("Jesen"); fun2("Jesen");
2、和java不同,js是无重载的:
function fun1(arg){
alert(arg+100); }
function fun1(arg,arg2){
alert(arg+10); }
//第二个fun1将覆盖第一个的定义,在下面讲到的arguments中可以解决重载问题。
fun1(10);
function fun1(arg){
alert(arg+100); }
function fun1(arg,arg2){
alert(arg+10); }
//第二个fun1将覆盖第一个的定义,在下面讲到的arguments中可以解决重载问题。
fun1(10);
3、arguments对象
//arguments对象是传给函数的参数数组
function fun1(){ alert(arguments.length); }
fun1(); fun1(2); fun1(2,3);
//模拟函数重载
function fun3(){
if(arguments.length==1)
{ alert(arguments[0]+10); }
else{ alert(arguments[0]+arguments[1]); } }
fun3(100); fun3(10,20);
//arguments对象是传给函数的参数数组
function fun1(){ alert(arguments.length); }
fun1(); fun1(2); fun1(2,3);
//模拟函数重载
function fun3(){
if(arguments.length==1)
{ alert(arguments[0]+10); }
else{ alert(arguments[0]+arguments[1]); } }
fun3(100); fun3(10,20);
[color=blue]4、闭包
对于闭包,理解的不是很透彻,也请了解的朋友解释下。
有说函数内部使用全局变量就是一个简单的闭包的:
var g_arg = "ok"; function fun1(){ alert(g_arg); }
fun1();
var g_arg = "ok"; function fun1(){ alert(g_arg); }
fun1();
也有一种是函数外部调用函数内部变量的闭包:
function a(){ var i=0; function b(){ alert(++i); } return b; }
var c = a(); c(); c();
function a(){ var i=0; function b(){ alert(++i); } return b; }
var c = a(); c(); c();
不是很理解javascript中闭包的作用,大家可讨论下。
严格意义上讲任何一个function在执行时就构成一个闭包,闭包的实质是作用域。
普通的function,内部声明的变量在执行完会全被回收掉,这时闭包也被回收了,所以这种闭包对我们没有用处,他只是个作用域。
如果一个function的局部变量在执行时被生命周期更长的变量引用,那么这个function执行完时就不能回收掉这个局部变量,这个局部变量的生命周期超出了他的作用域,这时的作域也不能被回收掉,就形成了典型的闭包。
闭包的作用就是使局部变量拥有更大的生命周期,甚至全局的生命周期,这使得闭包可以保存function执行时的状态,特别是那种function中又返回一个function时,被返回的function就可以访问父function执行时的所有局部变量(典型的带状态函数)。因为JS中回收一个变量不是看作用域是否结束,而是看引用数。 [/color]
5、匿名函数
js实现匿名函数有三种方式:
a、函数字面量:首先声明一个函数对象,然后执行它。
(function(arg){ alert(arg); } ) (1);
(function(arg){ alert(arg); } ) (1);
b、优先表达式:由于Javascript执行表达式是从圆括号里面到外面,所以可以用圆括号强制执行声明的函数。
( function(arg){ alert(arg); } (2) );
( function(arg){ alert(arg); } (2) );
c、Void操作符:用void操作符去执行一个没有用圆括号包围的一个单独操作数。
void function(arg){ alert(arg); }(3)
void function(arg){ alert(arg); }(
3)
我们一般通常用第一种方法,在扩展jquery的时候我们也经常会用到这种匿名函数的写法:
(function($) { $.fn.pluginName = function() { // Our plugin implementation code goes here. }; })(jQuery);
(function($) { $.fn.pluginName = function() { // Our plugin implementation code goes here. }; })(jQuery);
上面定义了一个jQuery函数,形参是$,函数定义完成之后,把jQuery这个实参传递进去.立即调用执行。这样的好处是,我们在写jQuery插件时,也可以使用$这个别名,而不会与prototype引起冲突.
引用http://www.iteye.com/topic/976562
分享到:
相关推荐
JavaScript ES6函数式编程是现代Web开发中的重要概念,它为开发者提供了更高效、更简洁的...通过阅读《JavaScript ES6函数式编程入门经典》这本书,你将能深入学习这些概念,并逐步成为一名熟练的JavaScript开发者。
《JavaScriptES6函数式编程入门经典》使用JavaScriptES6带你学习函数式编程。你将学习柯里化、偏函数、高阶函数以及Monad等概念。 目前,编程语言已经将焦点从对象转移到函数。JavaScript支持函数式编程,并允许...
JavaScript ES6函数式编程入门经典是一本针对JavaScript开发者,尤其是初学者的教程,旨在帮助他们掌握ES6(ECMAScript 2015)的新特性,并深入理解函数式编程的概念和实践。函数式编程是一种编程范式,它强调将计算...
首先,入门阶段,你需要理解JavaScript的基本语法,包括变量声明、数据类型(如字符串、数字、布尔值、对象、数组等)、控制流程(如条件语句、循环结构)以及函数的使用。这些构成了JavaScript的基础骨架,是编写...
此外,关于JavaScript的其它编程技巧,本篇介绍了多个专题,包括常用函数技巧、面向对象入门、json操作、切换特效、查找算法、错误与调试、数据结构与算法、遍历算法以及数学运算的用法总结。这些内容都是非常实用的...
JavaScript中的函数是编程的核心元素,它是可重复使用的代码块,能够根据输入参数执行特定任务。在JavaScript中,函数既是数据类型,也是第一级公民,这意味着它们可以被赋值给变量、作为参数传递以及作为其他函数的...
资源名称:JAVAscript入门经典 第6版内容简介:本书是学习Javascript编程的经典教程。全新的第6版涵盖了ECMAscript 6。全书分为8个部分,共26章。首部分“Javascript基础”,包括第1章到第4...
本资源“javascript入门实用例子”是一个针对初学者的实践教程,旨在帮助你快速理解并掌握JavaScript的基础知识和实际应用。通过使用Eclipse这样的集成开发环境(IDE),你可以更方便地管理和调试代码。 首先,让...
作为“javascript入门参考资料”这个压缩包,它包含了帮助初学者踏入JavaScript世界的必备资料。 首先,"javascript入门参考资料.ppt"很可能是一个PowerPoint演示文稿,这种格式通常用于教学或讲座,以图文并茂的...
《JavaScript入门经典(第五版)》由Paul Wilton编著,是一本深受读者喜爱的JavaScript学习资源,尤其适合初学者。本书旨在帮助读者快速掌握JavaScript的基础知识,并逐步提升编程能力。 在JavaScript的世界里,你...
JavaScript的异步编程是其一大特色,因此在《JavaScript入门经典》中,作者也详细讲解了回调函数、Promise和async/await等异步处理方式,帮助读者应对复杂的并发问题。 最后,本书还涉及了一些现代JavaScript特性,...
"JavaScript入门经典"是一本旨在帮助初学者掌握JavaScript基础知识的教程,源代码提供给学习者实践和探索。 在"jc_wyzz-JavaScript_rmjd"这个压缩包中,很可能包含了与《JavaScript入门经典》书中的各个章节对应的...
总之,这个"JavaScript入门学习资料包"为初学者提供了一个全面学习JavaScript的平台,从基础到高级,从理论到实践,逐步建立起扎实的JavaScript知识体系。通过系统学习和不断实践,你将能够熟练掌握这门强大的编程...
这个"JavaScript入门经典源代码"压缩包很可能是包含了一系列用于初学者学习JavaScript编程的示例代码。通过这些源代码,学习者可以深入理解JavaScript的基础概念、语法结构以及常见功能的实现方式。 1. **基础语法*...
"JavaScript从入门到精通(第4版)"是一本旨在帮助初学者掌握这门语言的教材,通过详细的示例源码和习题答案,让学习者能够逐步深入理解JavaScript的核心概念和实际应用。 1. **基础语法**:JavaScript的基础包括...
JavaScript,一种广泛应用于网页和网络应用的编程语言,是互联网上实现动态交互的关键技术。...通过阅读《JavaScript入门教程.ppt》这个压缩包中的内容,初学者可以逐步深入到JavaScript的世界,开启编程之旅。
本资料“663752 JavaScript ES6函数式编程入门经典”将引导初学者深入理解这一概念。 在函数式编程中,"纯函数"是核心概念之一。纯函数是指没有副作用且对相同的输入总是返回相同输出的函数。它们不依赖外部状态,...
这篇"JavaScript入门新手学习笔记"提供了全面的学习资源,适合初学者系统性地掌握这一技术。 笔记可能包含了以下关键知识点: 1. **基础语法**:JS的基础包括变量(var、let、const)、数据类型(如字符串、数字、...
此"JavaScript入门教程(清晰PDF)"提供了一个良好的起点,帮助初学者理解这一强大的编程工具。本教程涵盖了JavaScript的基本概念、语法以及实际应用,旨在使读者能够熟练地在浏览器环境中编写代码。 一、JavaScript...
"javascript入门视频教程(比较不错的)" 提供了一个全面学习JavaScript的基础路径,帮助新手逐步掌握这门语言。 本教程可能包含以下核心知识点: 1. **基础语法**:讲解JavaScript的基础,包括变量、数据类型(如...