搜档网
当前位置:搜档网 › 用函数式编程技术编写优美的+JavaScript

用函数式编程技术编写优美的+JavaScript

用函数式编程技术编写优美的+JavaScript
用函数式编程技术编写优美的+JavaScript

函数式编程

函数式编程只描述在程序输入上执行的操作,不必使用临时变量保存中间结果。重点是捕捉“是什么以及为什么”,而不是“如何做”。与将重点放在执行连续命令上的过程性编程相比,函数式编程的重点是函数的定义而不是状态机(state machine )的实现。大型知识管理系统应用程序从使用函数式编程风格上受益颇多,因为函数式编程简化了开发。

请告诉每

个人。请把这个提交给:Digg Slashdot

只用三行Miranda 代码就可以编写例程,根据参数,使用广度优先或深度优先遍历处理n 叉树的每个节点,而且元素可以是任何通用类型。

用函

数式编程技术编写优美的

JavaScript

级别:初级

首席顾问,Siemens Information Systems Limited 2006年7月20日

函数式或声明性编程是非常强大的编程方法,正逐渐在软件行业流行起来。这篇文章将介绍一些相关的函数式编程概念,并提供有效使用这些概念的示例。作者将解释如何使用JavaScript(TM)?(JavaScript 能导入函数式编程的构造和特性)编写优美的代码。

简介

函数式编程语言在学术领域已经存在相当长一段时间了,但是从历史上看,它们没有丰富的工具和库可供使用。随着.NET 平台上的Haskell 的出现,函数式编程变得更加流行。一些传统的编程语言,例如C++和JavaScript ,引入了由函数式编程提供的一些构造和特性。在许多情况下,JavaScript 的重复代码导致了一些拙劣的编码。如果使用函数式编程,就可以避免这些问题。此外,可以利用函数式编程风格编写更加优美的回调。

因为函数式编程采用了完全不同的组织程序的方式,所以那些习惯于采用命令式范例的程序员可能会发现函数式编程有点难学。在这篇文章中,您将了解一些关于如何采用函数式风格,用JavaScript 编写良好的、优美的代码的示例。我将讨论:

函数式编程概念,包括匿名函数、调用函数的不同方法,以及将函数式概念的运用,采用的示例包括:扩展数组排序;动态HTML 生成的优美代码;系列函数的应用。

函数式编程概念

在那些通过描述“如何做”指定解决问题的方法的语言中,许多开发人员都知道如何进行编码。例如,要编写一个计算阶乘的函数,我可以编写一个循环来描述程序,或者使用递归来查找所有数字的乘积。在这两种情况下,计算的过程都在程序中进行了详细说明。显示了一个计算阶乘的可能使用的C 代码。清单1.过程风格的阶乘

int factorial (int n){

if (n <= 0) return 1; else

return n * factorial (n-1);}

这类语言也叫做过程性编程语言,因为它们定义了解决问题的过程。函数式编程与这个原理有显著不同。在函数式编程中,需要描述问题“是什么”。函数式编程语言又叫做声明性语言。同样的计算阶乘的程序可以写成所有到n 的数字的乘积。计算阶乘的典型函数式程序看起来如中的示例所示。清单2.函数式风格的阶乘

factorial n, where n <= 0 := 1

factorial n := foldr * 1 take n [1..]

第二个语句指明要得到从1开始的前n 个数字的列表(take n [1..]),然后找出它们的乘积,1为基元。这个定义与前面的示例不同,没有循环或递归。它就像阶乘函数的算术定义。一旦了解了库函数(take 和foldr )和标记(list notation [])的意义,编写代码就很容易,而且可读性也很好。

从历史上看,函数式编程语言不太流行有各种原因。但是最近,有些函数式编程语言正在进入计算机行业。其中一个例子就是.NET 平台上的Haskell 。其他情况下,现

有的一些语言借用了函数式编程语言中的一些概念。一些C ++实现中的迭代器和continuation ,以及JavaScript 中提供的一些函数式构造(functional construct ),

就是这种借用的示例。但是,通过借用函数式构造,总的语言编程范例并没有发生变化。JavaScript 并没因为函数式构造的添加就变成了函数式编程语言。

我现在要讨论JavaScript 中的函数式构造的各种美妙之处,以及在日常编码和工作中使用它们的方式。我们将从一些基本功能开始,然后用它们查看一些更有趣的应用。匿名函数

在JavaScript 中,可以编写匿名函数或没有名称的函数。为什么需要这样的函数?请继续往下读,但首先我们将学习如何编写这样一个函数。如果拥有以下JavaScript 函数:清单3.典型的函数

function sum(x,y,z) {

return (x+y+z);

}

然后对应的匿名函数看起来应当如下所示:

清单4.匿名函数

function(x,y,z) {

return (x+y+z);

}

要使用它,则需要编写以下代码:

清单5.应用匿名函数

var sum = function(x,y,z) {

return (x+y+z);

}(1,2,3);

alert(sum);

使用函数作为值

也可以将函数作为值使用。还可以拥有一些所赋值是函数的变量。在最后一个示例中,还可以执行以下操作:

清单6.使用函数赋值

var sum = function(x,y,z) {

return (x+y+z);

}

alert(sum(1,2,3));

在上面清单6的示例中,为变量sum赋的值是函数定义本身。这样,sum就成了一个函数,可以在任何地方调用。

调用函数的不同方法

JavaScript允许用两种方式调用函数,如清单7和8所示。

清单7.典型的函数应用

alert (“Hello, World!");

清单8.用函数作为表达式

(alert) (“Hello, World!");

所以也可以编写以下代码:

清单9.定义函数之后就可以立即使用它

( function(x,y,z) { return (x+y+z) } ) (1, 2, 3);

可以在括号中编写函数表达式,然后传递给参数,对参数进行运算。虽然在清单8的示例中,有直接包含在括号中的函数名称,但是按清单9中所示方式使用它时,就不是这样了。

将函数作为参数传递给其他函数

也可以将函数作为参数传递给其他函数。虽然这不是什么新概念,但是在后续的示例中大量的使用了这个概念。可以传递函数参数,如清单10所示。

清单10.将函数作为参数传递,并应用该函数

var passFunAndApply = function (fn,x,y,z) { return fn(x,y,z); };

var sum = function(x,y,z) {

return x+y+z;

};

alert( passFunAndApply(sum,3,4,5) ); // 12

执行最后一个alert语句输出了一个大小为12的值。

使用函数式概念

前一节介绍了一些使用函数式风格的编程概念。所给的示例并没有包含所有的概念,它们在重要性方面也没有先后顺序,只是一些与这个讨论有关的概念而已。下面对JavaScript中的函数式风格作一快速总结:

函数并不总是需要名称。

函数可以像其他值一样分配给变量。

函数表达式可以编写并放在括号中,留待以后应用。

函数可以作为参数传递给其他函数。

这一节将介绍一些有效使用这些概念编写优美的JavaScript代码的示例。(使用JavaScript函数式风格,可以做许多超出这个讨论范围的事。)

扩展数组排序

先来编写一个排序方法,可以根据数组元素的日期对数据进行排序。用JavaScript编写这个方法非常简单。数据对象的排序方法接受一个可选参数,这个可选参数就是比较函数。在这里,需要使用清单11中的比较函数。

清单11.比较函数

function (x,y) {

return x.date – y.date;

}

要得到需要的函数,请使用清单12的示例。

清单12.排序函数的扩展

arr.sort( function (x,y) {return x.date – y.date; } );

其中arr是类型数组对象。排序函数会根据arr数组中对象的日期对所有对象进行排序。比较函数和它的定义一起被传递给排序函数,以完成排序操作。使用这个函数:

每个JavaScript对象都有一个date属性。

JavaScript的数组类型的排序函数接受可选参数,可选参数是用来排序的比较函数。这与C库中的qsort函数类似。

动态生成HTML的优美代码

在这个示例中,将看到如何编写优美的代码,从数组动态地生成HTML。可以根据从数据中得到的值生成表格。或者,也可以用数组的内容生成排序和未排序的列表。也可以生成垂直或水平的菜单项目。

清单13中的代码风格通常被用来从数组生成动态HTML。

清单13.生成动态HTML的普通代码

var str=' ';

for (var i=0;i

var element=arr[i];

str+=... HTML generation code...

}

document.write(str);

可以用清单14的代码替换这个代码。

清单14.生成动态HTML的通用方式

Array.prototype.fold=function(templateFn) {

var len=this.length;

var str=' ';

for (var i=0 ; i

str+=templateFn(this[i]);

return str;

}

function templateInstance(element) {

return ... HTML generation code ...

}

document.write(arr.fold(templateInstance));

我使用Array类型的prototype属性定义新函数fold。现在可以在后面定义的任何数组中使用该函数。

系列函数的应用

考虑以下这种情况:想用一组函数作为回调函数。为实现这一目的,将使用window.setTimeout函数,该函数有两个参数。第一个参数是在第二个参数表示的毫秒数之后被调用的函数。清单15显示了完成此操作的一种方法。

清单15.在回调中调用一组函数

window.setTimeout(function(){alert(‘First!’);alert(‘Second!’);}, 5000);

清单16显示了完成此操作的更好的方式。

清单16.调用系列函数的更好的方式

Function.prototype.sequence=function(g) {

var f=this;

return function() {

f();g();

}

};

function alertFrst() { alert(‘First!’); }

function alertSec() { alert(‘Second!’); }

setTimeout( alertFrst.sequence(alertSec), 5000);

在处理事件时,如果想在调用完一个回调之后再调用一个回调,也可以使用清单16中的代码扩展。这可能是一个需要您自行完成的一个练习,现在您的兴趣被点燃了吧。

结束语

在许多领域中都可以应用JavaScript中的函数式编程,以优美的方式完成日常活动。这篇文章中的示例只介绍了几种情况。如果您找到了函数式编程的合适场景,并应用这些概念,那么您就会有更多的理解,并且可以增加您的优美程度。

参考资料

学习

您可以参阅本文在developerWorks全球站点上的英文原文。

“Functional programming in the Java language:Use closures and higher order functions to write modular Java

code”(developerworks,2004年7月):学习如何使用函数式编程构造(例如封装和更高级别的函数),用Java语言编写结构良好化的代码。

“Beginning Haskell”(developerWorks,2001年9月):请参阅这份教程,它提供了函数式编程范例的介绍,用Haskell98语言进行Tutorial Papers in Functional Programming:找到与函数式编程有关的一些主题的多个资源。

developerWorks Web架构专区:利用针对Web技术的文章和教程来扩展您的站点开发技能。

developerWorks technical events and webcasts:热切关注最热闹的技术会议,它们可以缩短您的学习曲线、改进最令您头疼的软件项目的质量和结果。

获得产品和技术

免费下载和学习资源:使用来自developerWorks Web架构专区的文章、教程和下载改进您的工作。

讨论

参与developerWorks讨论组。

developerWorks blogs:加入developerWorks社区。

关于作者

Shantanu Bhattacharya曾为各类应用程序软件大量设计和创建架构,这些软件中包括零售、系统集成、卫生保健软件;基于SNMP和TCP/IP堆栈的网络软件;安全软件;印度第一台超级计算机的文件系统;印度导弹项目的实时软件。目前他是一名首席架构师,在西门子位于Bangalore的分部从事卫生保健方面的工作。

IBM公司保留在developerWorks网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过提交转载请求表单联系我们的编辑团队。

javascript 内置函数和对象

实验项目三内置函数和对象 【学时数】 2 (45 分钟× 2=90 分钟) 【实验内容】 1 、JavaScript 内置函数的应用 2 、JavaScript 内置对象的应用 【实验参考】 《网页设计与制作》………………………………………………………… 重庆大学出版社 《网页标题制作技巧与实例》……………………………………………… 清华大学出版社 《javascript 入门与提高》……………………………………………… 清华大学出版社 《javascript 宝典》……………………………………………………… 电子工业出版社 【实验设备】 计算机,投影机 【实验目的与要求】 1 、掌握JavaScript 内置函数的使用方法 2 、掌握JavaScript 常用内置对象的属性和方法 【实验重点】 1 、掌握JavaScript 内置函数的使用方法 2 、掌握JavaScript 常用内置对象的属性和方法 【实验难点】 1 、掌握使用浏览器对象提供的信息来完成一定功能的网页设计。 【实验方式】 1 、项目工程互动式教学法 2 、“讲、学、练”相结合:对于javascript 内置函数和对象相关细节,大量采用演示、讲解和操作等方式。使学生在实验中加深对相关内容的理解并熟练掌握。 【实验设计】 向学生演示多个javascrip 内置函数和对象的程序案例,学生跟着教师一起完成javascript 程序的编写,同时完成教师布置的思考题,教师实施指导。 第一步:演示JavaScript 内置函数的应用,学生按照教师的操作步骤,自己动手编写该程序,并完成教师布置的思考题。(20 分钟左右)第二步:演示JavaScript 常用内置对象的应用,学生按照教师的操作步骤,自己动手编写该程序,并完成教师布置的思考题。(35 分钟左右) 【实验过程】 实验内容一:JavaScript 内置函数的应用

理解JavaScript中函数的使用

理解JavaScript中函数的使用 函数是进行模块化程序设计的基础,编写复杂的Ajax应用程序,必须对函数有更深入的了解。 JavaScript中的函数不同于其他的语言,每个函数都是作为一个对象被维护和运行的。通过函数对象的性质,可以很方便的将一个函数赋值给一个变量或者将函数作为参数传递。在继续讲述之前,先看一下函数的使用语法: function func1(…){…} var func2=function(…){…}; var func3=function func4(…){…}; var func5=new Function(); 这些都是声明函数的正确语法。它们和其他语言中常见的函数或之前介绍的函数定义方式有着很大的区别。那么在JavaScript中为什么能这么写?它所遵循的语法是什么呢?下面将介绍这些内容。 认识函数对象(Function Object) 可以用function关键字定义一个函数,并为每个函数指定一个函数名,通过函数名来进行调用。在JavaScript解释执行时,函数都是被维护为一个对象,这就是要介绍的函数对象(Function Object)。 函数对象与其他用户所定义的对象有着本质的区别,这一类对象被称之为内部对象,例如日期对象(Date)、数组对象(Array)、字符串对象(String)都属于内部对象。这些内置对象的构造器是由JavaScript本身所定义的:通过执行new Array()这样的语句返回一个对象,JavaScript内部有一套机制来初始化返回的对象,而不是由用户来指定对象的构造方式。 在JavaScript中,函数对象对应的类型是Function,正如数组对象对应的类型是Array,日期对象对应的类型是Date一样,可以通过new Function()来创建一个函数对象,也可以通过function关键字来创建一个对象。为了便于理解,我们比较函数对象的创建和数组对象的创建。先看数组对象:下面两行代码都是创建一个数组对象myArray: var myArray=[]; //等价于 var myArray=new Array();

Javascript自执行匿名函数(function { }) 的原理浅析

Javascript自执行匿名函数(function { }) 的原理浅析 匿名函数就是没有函数名的函数。这篇文章主要介绍了Javascript自执行匿名函数(function { }) 的原理浅析的相关资料,需要的朋友可以参考下 函数是JavaScript中最灵活的一种对象,这里只是讲解其匿名函数的用途。匿名函数指没有指定函数名或指针的函数,自执行匿名函数只是其中一种,下文中称这种函数为:自执行函数 下面是一个最常见的自执行函数: // 传统匿名函数 (function { alert('hello'); }) ; 这段代码的执行效果就是在页面再载入时弹出:"hello" 是什么促使它自动执行的?,来看下面的代码 // 在传统写法上去掉小括号,并在前面加上运算符~,!,+,- ~function { alert('hello'); } ;

!function { alert('hello'); } ; +function { alert('hello'); } ; -function { alert('hello'); } ; 这些写法与上文所说的传统方式执行起来并无区别, 我发现,这些写法的共同点是运算符,其实传统方式的小括号也属于运算的一种,出现在:a=b*(c+d),运算符 + 传递给自生的参数 = 函数自动执行?但有些符号也不支持,比如“=,*,/”号,它自执行的原因还是很神秘,网上也找不到像样的答案 然后我发现了一个神奇的现象,这些运算符可以无限叠加。。。。。。 // function前面是特定符号可以无限叠加... ~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+ -+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+ -~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-

实验项目21—JAVASCRIPT内置函数和对象

实验难点 实验内容实验目的 实验重点实验步骤 实验内容 1、JavaScript 内置函数的应用 2、JavaScript 内置对象的应用 3、JavaScript 浏览器对象的应用

实验难点实验内容实验目的实验重点实验步骤 实验目的 1、掌握JavaScript 内置函数的使用方法 2、掌握JavaScript 常用内置对象的属性和方法 3、掌握JavaScript 浏览器对象的含义 4、掌握使用浏览器对象提供的信息来完成一定功能的网页设计。

实验难点 实验内容实验目的实验重点实验步骤 实验重点 1、掌握JavaScript 内置函数的使用方法 2、掌握JavaScript 常用内置对象的属性和方法 3、掌握JavaScript 浏览器对象的含义

实验难点 实验内容实验目的实验重点 实验步骤 实验难点 1、掌握使用浏览器对象提供的信息来完成一定功能的网页设计。

实验难点 实验内容 实验目的 实验重点 实验步骤实验内容一:JavaScript 内置函数的应用 1、eval( ):计算字符串表达式的值 2、parseFloat( )和parseInt( ):将字符串开头的整数或浮点数分解出来,转换为整数或浮点数 3、isNaN( ):确定一个变量是否为NaN (Not a Number ) 4、escape( ):将字符串中的非字母数字字符转换为按格式%XX 表示的数字 5、unescape( ):将字符串格式为%XX 的数字转换为字符 6、程序案例1_1:求用户在提示对话框中输入的表达式的值。 7、思考题: 判断用户输入的字符是不是数字,如果是,分别将其转换成浮点数和整数,并显示到网页上。

javascript函数库(全)

转载请注明出处-中国设计秀https://www.sodocs.net/doc/3611134313.html, /* -------------- 函数检索-------------- trim函数: trim() lTrim() rTrim() 校验字符串是否为空: checkIsNotEmpty(str) 校验字符串是否为整型: checkIsInteger(str) 校验整型最小值: checkIntegerMinValue(str,val) 校验整型最大值: checkIntegerMaxValue(str,val) 校验整型是否为非负数: isNotNegativeInteger(str) 校验字符串是否为浮点型: checkIsDouble(str) 校验浮点型最小值: checkDoubleMinValue(str,val) 校验浮点型最大值: checkDoubleMaxValue(str,val) 校验浮点型是否为非负数: isNotNegativeDouble(str) 校验字符串是否为日期型: checkIsValidDate(str) 校验两个日期的先后: checkDateEarlier(strStart,strEnd) 校验字符串是否为email型: checkEmail(str) 校验字符串是否为中文: checkIsChinese(str) 计算字符串的长度,一个汉字两个字符: realLength() 校验字符串是否符合自定义正则表达式: checkMask(str,pat) 得到文件的后缀名: getFilePostfix(oFile) -------------- 函数检索-------------- */ /** * added by LxcJie 2004.6.25 * 去除多余空格函数 * trim:去除两边空格lTrim:去除左空格rTrim: 去除右空格 * 用法: * var str = " hello "; * str = str.trim(); */ String.prototype.trim = function() { $)/g,return this.replace(/(^[\s]*)|([\s]* ""); } String.prototype.lTrim = function() { return this.replace(/(^[\s]*)/g, ""); } String.prototype.rTrim = function() { $)/g,return this.replace(/([\s]* ""); } /********************************** Empty **************************************/ /** *校验字符串是否为空 *返回值: *如果不为空,定义校验通过,返回true *如果为空,校验不通过,返回false 参考提示信息:输入域不能为空! */

javascript常用函数集

javascript常用函数集 javascript提供了许多函数供开发人员使用,下面给出一个简单介绍,更详细的信息请参考Visual InterDev提供的在线关心。 javascript函数一共可分为五类: ·常规函数 ·数组函数 ·日期函数 ·数学函数 ·字符串函数 1.常规函数 javascript常规函数包括以下9个函数: (1)alert函数:显示一个警告对话框,包括一个OK按钮。 (2)confirm函数:显示一个确认对话框,包括OK、Cancel按钮。 (3)escape函数:将字符转换成Unicode码。 (4)eval函数:运算表达式的结果。 (5)isNaN函数:测试是(true)否(false)不是一个数字。 (6)parseFloat函数:将字符串转换成符点数字形式。 (7)parseInt函数:将符串转换成整数数字形式(可指定几进制)。 (8)prompt函数:显示一个输入对话框,提示等待用户输入。例如: eval( )内置函数的用法:计算字符串表达式的值。

JAVASCRIPT面向对象基础总结

javascript面向对象基础 1.使用[]调用对象的属性和方法 functionUser() { this.age=21; this.sex="男?"; } varuser=newUser(); alert(user["age"]); 2.动态添加,修改,删除对象的属性和方法//定义类varuser=newObject(); //添加属性和方法 https://www.sodocs.net/doc/3611134313.html,="cary"; user.age=21; user.show=function(){ alert(https://www.sodocs.net/doc/3611134313.html,+"年?龄?为?:?"+this.age);} //执行方法 user.show(); //修改属性和方法 https://www.sodocs.net/doc/3611134313.html,="James"; user.show=function() { alert(https://www.sodocs.net/doc/3611134313.html,+"你?好?"); } //执行方法 user.show(); //删除属性和方法 https://www.sodocs.net/doc/3611134313.html,="undefined"; user.show="undefined" //执行方法 user.show(); 3.使用大括号{}语法创建无类型对象varobj={}; varuser= { name:"cary", age:21,

show:function(){ alert(https://www.sodocs.net/doc/3611134313.html,+"年?龄?为?:?"+this.age); } } user.show(); varobj={};等价于 varobj=newObject(); 4.Prototype原型对象 每个函数function也是一个对象,对应的类类型为“Function”,每个函数对象都有一个子对象prototype,表示函数的原型,所以当我们new一个类的对象的时候prototype对象的成员都会被实例化为对象的成员。例如: functionclass1() {} class1.prototype.show=function(){ alert("prototyemember"); } varobj=newclass1(); obj.show(); 5.Function函数对象详解 5.1Function和Date,Array,String等一样都属于JavaScript的内部对象,这些对象的构造器是由JavaScript本身所定义的。上面说过函数对象对应的类型是Function,这个和数组的对象是Array一个道理。所以也可以像newArray()一样newFunction()来创建一个函数对象,而函数对象除了使用这种方式还可以使用function关键字来创建。我们之所以不经常使用newFunction()的方式来创建函数是因为一个函数一般会有很多语句,如果我们将这些都传到newFunction()的参数中会显得可读性比较差。varfunctionName=newFunction(p1,p2,...,pn,body)其中p1到pn为参数,body为函数体。 5.2有名函数和无名函数 有名函数:functionfuncName(){}无名函数:varfuncName=function(){}他们之间的唯一区别:就是对于有名函数他可以出现在调用之后再定义,而对于无名函数,他必须是在调用之前就已经定义好。 5.3我们可以利用Function的prototype对象来扩展函数对象,如: Function.prototype.show=function(){ alert("扩展方法"); }

JavaScript函数大全 集合

1.document.write("");为输出语句 2.JS中的注释为// 3.传统的HTML文档顺序是:document->html->(head,body) 4.一个浏览器窗口中的DOM顺序是:window->(navigator,screen,history,location,document) 5.得到表单中元素的名称和值:document.getElementById("表单中元素的ID号").name(或value) 6.一个小写转大写的JS: document.getElementById("output").value = document.getElementById("input").value.toUpperCase(); 7.JS中的值类型:String,Number,Boolean,Null,Object,Function 8.JS中的字符型转换成数值型:parseInt(),parseFloat() 9.JS中的数字转换成字符型:(""+变量) 10.JS中的取字符串长度是:(length) 11.JS中的字符与字符相连接使用+号. 12.JS中的比较操作符有:==等于,!=不等于,>,>=,<.<= 13.JS中声明变量使用:var来进行声明 14.JS中的判断语句结构:if(condition){}else{} 15.JS中的循环结构:for([initial expression];[condition];[upadte expression]) {inside loop} 16.循环中止的命令是:break 17.JS中的函数定义:function functionName([parameter],...){statement[s]} 18.当文件中出现多个form表单时.可以用document.forms[0],document.forms[1]来代替. 19.窗口:打开窗口window.open(), 关闭一个窗口:window.close(), 窗口本身:self 20.状态栏的设置:window.status="字符"; 21.弹出提示信息:window.alert("字符"); 22.弹出确认框:window.confirm(); 23.弹出输入提示框:window.prompt(); 24.指定当前显示链接的位置:window.location.href="URL" 25.取出窗体中的所有表单的数量:document.forms.length 26.关闭文档的输出流:document.close(); 27.字符串追加连接符:+= 28.创建一个文档元素:document.createElement(),document.createTextNode() 29.得到元素的方法:document.getElementById() 30.设置表单中所有文本型的成员的值为空: var form = window.document.forms[0] for (var i = 0; i

JavaScript对象数组排序函数及六个用法_javascript技巧.docx

JavaScript对象数组排序函数及六个用法 分享一个用于数组或者对象的排序的函数。该函数可以以任意深度的数组或者对 彖的值作为排序基数对数组或的元素进行排序。 代码如下: /** *排序数组或者对象 *by Jinko *date -- *?param object数组或对彖 *@param subkey需要排序的子键,该参数可以是字符串,也可以是一个数组*@param desc 排序方式,true:降序,false] undefined:升序 *?returns {*}返回排序后的数组或者对象 * *注意:对于对彖的排序,如果使用console, log打印对彖的显示可能和排序结果不一致, *其键会被浏览器以字母顺序排序显示,但在for循环中则为正确的排序顺序*/ function sort object (object, subkey, desc) { " var i s_array 二false; if (Object, prototype. toString. call(objeet)二二二[object Array]J) { is_array = true; }" if(is_array) { var keys = {length:object, length}; } else { if(typeof(Object, keys) == ' function") { var keys = Object, keys(object); } else{ var keys 二[]; for (var key in keys) { keys.push (key); } } } for(var i二;i

Javascript-5-函数-下

1:作用域 定义:变量起作用的范围。 在函数外部定义的变量称为全局变量,那么所有的脚本和函数都能访问到它。 在函数内部定义的变量称为局部变量(本地变量),所以只能在函数内部才能访问的到。 注: 1:如果把值赋给尚未声明的变量,该变量将自动作为全局变量声明。 2:变量作用域在函数定义的时候就已经确定下来了。 2:生存周期 JavaScript 变量的生命期从它们被声明的时间开始。 局部变量会在函数运行完毕后被删除。 全局变量会在页面关闭后被删除。 3:with语句(扩展) 定义:为一个或者一组语句指定默认对象。 注意:在严格模式下,with语句不能使用。 提示:with语句是运行缓慢的代码块,尽量避免使用。 4:回调函数 回调函数就是一个通过函数指针调用的函数。

如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。 回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。 5:递归函数 定义:允许内部程序调用自己本身的函数。 特点: 1:在函数里面调用自身。 2:必须有一个明确的递归结束条件,这个称之为递归出口。 3:不确定循环执行的次数。 注:快速排序中就使用到了递归函数。 6:匿名函数及调用方式 定义:顾名思义,就是没有名字的函数。 自运行:自动运行。 调用方式:(function () {})(); 7:构造函数 主要用来在创建对象时初始化对象,即为对象成员变量赋初始值,总与new运算符一起使用。构造函数名称首字母一般都大写。

应用: 1:利用递归求100的阶乘。 function recursive(num) { return num === 1 ? 1: num * recursive(num - 1); } 2:利用递归求两个数字的最大公约数。 公约数:亦称“公因数”。它是一个能被若干个整数同时均整除的整数。如果一个整数同时是几个整数的约数,称这个整数为它们的“公约数”;公约数中最大的称为最大公约数。 function getNum(m, n) { var r = m % n; m = n; n = r; return r === 0 ? m : getNum(m, n); }

JavaScript

JavaScript+jQuery实现页面特效 1.下列选项中,不是typeof的返回值的是()。 A.String B.Boolean C.Null D.Undefined 2.分析下列JavaScript代码,经历运算后a的值为()。 Var x=”13”; Var y=”23”; Var a=x+y; A.1323 B.13 C.23 D.程序报错 3.下列语句中,()语句是根据表达式的值进行匹配,然后执行其中的一个语句块。如果找不到匹配项,则执行默认语句块。 A.switch B.if-else C.for D.continue 4.在JavaScript中,运行下列代码后,sum的值是()。 Var sum=0;

For(i=1;i<10;i++){ If(i%5==0) Break; Sum=sum+i; } A.40 B.50 C.5 D.10 5.在JavaScript中,运行下面代码后,在页面上输出()。Var flag; document.write(typeof(flag)); A.Undefined B.Null C.Number D.Boolean 6.下列关于函数说法错误的是()。 A.函数是一段可以重复代码的集合

B.JavaScript中使用function关键字定义函数 C.函数只能在事件中调用 D.函数通常情况下用于处理事件的发生 7.下拉菜单中,用户更改表单元素select中的值时,就会调用()事件处理程序。 A.onChange B.onFocus C.onMouseOver D.onClick 8.当按键盘A时,使用onKeypress事件打印event.KeyCode的结果是()。 A.65 B.13 C.97 D.37 9.关于JavaScript中的函数,下列说法正确的是()。 A.即使声明了形参调用时也可以不传参数

JavaScript的系统函数学习

JavaScript的系统函数学习 1.编码处理函数 1) encodeURI 返回一个对URI字符串编码后的结果。URL是最常见的一种URI; 2) decodeURI 将一个已编码的URI字符串解码成最原始的字符串返回; 3)举例: < Script language = " javascript " > 输出结果如下: encodeStr: https://www.sodocs.net/doc/3611134313.html,/index.jsp?name=%E9%98%BF%E8%9C%9C%E6%9E%9C decodeStr: https://www.sodocs.net/doc/3611134313.html,/index.jsp?name=阿蜜果 2. 数值处理函数 1) parseInt 将一个字符串指定的进制转换为一个整数,语法格式为: parseInt(numString, [radix]) 第一个参数是要进行转换的字符串,是介于2到36之间的数值,用于指定进行字符串转换时

所用的进制。 举例如下: