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(12)

      如果调用参数(ab)的时候没有给值,则值默认为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)他们是可执行的,可以向其他的变量一样拷贝和删除。函数的命名规则和一般变量相同。

         让我们在此歇脚,然后去函数的第二部分继续探险。

0 0
原创粉丝点击