Web前端大冒险 第二章 JSP函数大冒险(一)函数基础
来源:互联网 发布:北外网络教育 编辑:程序博客网 时间:2024/05/22 00:18
之前JSP的世界篇就这样介绍完了,从宏观角度把控javascript虽然有意思但是要想深入学习,就不得不往丛林深处探索,说着说着,就来到了函数大冒险的大门口。让我们来看看门口贴着的指南:
本次探险分为两部分,第一部分要掌握(1)如何定义和使用函数(2)如何向函数传递参数(3)了解我们可以调用哪些预定义函数(4)了解javascript的变量作用域(5)理解函数也是数据的概念,将其视为一种特殊的数据类型;
第二部分有如下猛兽需要注意:匿名函数的调用、回调函数、自调函数、内嵌函数(在函数内部定义的函数)、以函数为返回值的函数、能重定义自身的函数、闭包。
函数声明的示范如下:
function(function子句) sum(函数名称)(a,b)(函数所需参数,用逗号分隔){
var c = a+b;
Return c;(返回值,一般返回一个值,返回多个值可使用数组返回,未说明返回值默认为undefined)
}(函数体)
调用函数时,只需在函数名后加一对用于传递参数的括号即可。var result = sum(1,2)
如果调用参数(a,b)的时候没有给值,则值默认为undefined。即使传递参数过多,多余的部分也会被默默忽略。而每个函数都有一个内建的arguments数组,他能返回函数所接受的所有参数。例如
function args(){
return arguments;
}
args(); >>>[ ]
args(1,2,3,true,”ji”) >>>{1,2,3,true,”ji”}
我们可以通过arguments数组完善sun函数功能,使之对任意数量参数求和。
function sumOnSteroids(){
var i,res=0;
var num_of_params=arguments.length;
for(i=0;i<num_of_params;i++){
res+= arguments[i];
return res;
}
Javascript引擎中有一组随时可供调用的内建函数,简要介绍如下:
(1)parseInt()
作用:将收到的任何输入值(通常是字符串)转换成整数类型输出,转换失败返回NaN,从头开始转换到第一次不是数字的地方停止,例如parseInt(’1abc23’),结果为1,除此之外,还可以加上可选的第二参数,负责设定函数所希望的数字类型,例如parseInt(’FF’,10)结果为NaN,而parseInt(’FF’,16)的结果为255。二参数不设置默认为10进制,但是首参数字符以0x开头默认16进制,0开头默认8进制。
(2)parseFloat()
作用:与parseInt()基本相同,但他只支持将输入值转换为十进制,所以只有一个参数,还有不同的是,他可以接受指数形式的数据parseFloat(123e2)的结果为12300
(3)isNaN()
作用:通过isNaN,我们可以确定某个输入值是否是一个可以参与运算的数字,也可以检测parseInt与parseFloat调用成功与否。返回为true说明不成功,返回为false说明转换为了数字。他也会默认将输入转换为数字进行判断。
(4)isFinite()
作用:可以用来检查输入是否是一个既非infinity也非NaN的数字。正确为true,属于那两者则为false。
(5)URI的编码与反编码
在URL(UniformResource Locator,统一资源定位符)或URI(Uniform Resource Identifier,统一资源标识符)中,有一些字符是具有特殊含义的,如果我们想“转义”这些自负,就可以去调用函数encodeURI()或者是encodeURIComponent(),前者会返回一个可用的URL,后者则会认为我们所传递的仅仅是URL的一部分,偷个懒放张图:
而以上函数对应的反转函数就是decodeURI()或者是decodeURIComponent(),不再介绍
(6)eval()
作用:将其输入字符串当作JavaScript代码执行,大多数情况下,尽量避免使用,性能和安全性方面比较差
(7)alert()
虽然不是JSP核心的一部分,而是浏览器提供的,用于显示文本消息,但是对于调试很有帮助,但是他会阻塞浏览器线程,所以通常也不是一个好选择。
内建函数说完了,接下来谈谈变量的作用域。在JavaScript中,我们不能为变量定义特定的块作用域,但可以定义其所属的函数域。也就是说,如果变量是在某个函数中定义的,它在函数以外的地方是不可见的,而如果变量定义在if或者for这样的的代码块中,他在代码块之外是可见的。另外,全局变量是声明在所有函数之外的变量,而与之相对的局部变量,所指的是在某个函数中定义的变量。其中,函数内的代码可以像访问自己的局部变量那样访问全局变量,反之不行。如果声明变量没有使用var,就会被该变量默认为全局变量。但只有执行到该函数的时候,该变量才会被创建。函数局部变量的优先级大于全局域,所以局部变量会覆盖所有与他同名的全局变量,如果在函数内未正式定义,得到的值为undefined。
本次冒险最后一部分讲讲函数为什么是一种数据类型。来看一下两种函数定义:
function f(){return1;}(正常定义)
var f = functionf(){return 1;}(函数标识记法)
如果我们对函数变量调用typeof将会返回的字符串是“function”。所以JavaScript的函数是一种数据,只不过这种特殊的数据类型有两个重要的特性(1)所包含的是代码(2)他们是可执行的,可以向其他的变量一样拷贝和删除。函数的命名规则和一般变量相同。
让我们在此歇脚,然后去函数的第二部分继续探险。
- Web前端大冒险 第二章 JSP函数大冒险(一)函数基础
- Web前端大冒险 第二章 JSP函数大冒险(二)函数类型
- Web前端大冒险 第二章 JSP函数大冒险(三)闭包
- Web前端大冒险 第一章 JSP的世界(一)
- Web前端大冒险 第一章 JSP的世界(二)
- Web前端大冒险 序幕
- Web前端大冒险 行程规划
- hdu2512 一卡通大冒险(第二类斯特林数)
- HDOJ 题目2512 一卡通大冒险(斯特林第二类数)
- HDU 2512 一卡通大冒险(第二类 stirling 数)
- hdu 2512 一卡通大冒险【dp】【第二类斯特灵数】
- 一卡通大冒险
- Redis大冒险
- Redis大冒险
- 一卡通大冒险
- hdu 2512 一卡通大冒险 (DP)
- hdu 2512 一卡通大冒险 (水题)
- HDU 2512 一卡通大冒险(dp)
- [Oracle] decode 函数及其用法
- 关键字的作用
- 数据结构实验之图论六:村村通公路
- 菜鸟笔记之java多线程
- 【NOIP模拟题】【DP】2016.11.10 第二题题解
- Web前端大冒险 第二章 JSP函数大冒险(一)函数基础
- 傅立叶级数和傅立叶变换是什么关系?
- tar:time stamp in the future【偶尔发现的小问题】
- 关于The import android.support.v7.app cannot be resolved
- Spark生态之Alluxio学习11--alluxio-1.3.0集群配置
- POJ 3007
- linux ftp命令
- poj 1703 Find them, Catch them
- java.lang.IllegalStateException: Can't change tag of fragment xxxFragment