• 【JS】JavaScript 中的两类函数:预定义函数、自定义函数


    函数是一组延迟动作集,可以通过事件触发或在其他脚本中调用。

    JavaScript 中,函数可分为:

    【parseInt / parseFloat】string 转 int/float

    【isNaN / isFinite】检测参数是否为 非数字值/无穷数  

    【escape / unescape】对字符串 编码/解码

    【eval】执行 JavaScript 脚本

    【alert / confirm / prompt】三种警示框

    【命名函数】function funcName(){}

    【匿名函数】var x=function(){};

    【对象函数】var x=Function();

    【自调函数】(function(){}());

    预定义函数

    预定义函数是指在 JavaScript 引擎中预先定义的可随时使用的内建函数。如:

    1. parseInt("string",radix);

    • 将字符串转换成整数类型,第二参数用于指定输入参数的进制(可选)。
    • 当字符串中存在除了数字、符号、小数点和指数符号以外的字符时,parseInt() 函数就会停止,返回已有结果。
    • 当第一个字符就不能转换时,函数将返回“NaN”(Not a Number)。

    如:

    parseInt("10");      //返回 10
    parseInt("19",10);  //返回 19
    parseInt("11",2);   //返回 3
    parseInt("17",8);   //返回 15
    parseInt("1f",16);  //返回 31
    parseInt("010");    //未定:返回 10 或 8

    2. parseFloat("string");

    将字符串转换成浮点数类型。

    3. isNaN(value);

    • 用于检查其参数是否是非数字值。
    • 如果参数值为 NaN 或字符串、对象、undefined 等非数字值则返回  true, 否则返回 false。
    • 可以检测 parseInt() 和 parseFloat() 的调用是否成功。

    4. isFinite(number);

    • 用于检查其参数是否是无穷大。
    • 如果 number 是有限数字(或可转换为有限数字),那么返回 true。
    • 如果 number 是 NaN(非数字),或者是正、负无穷大的数,则返回 false。

    5. escape("string");

    对字符串进行编码,这样就可以在所有的计算机上读取该字符串。

    但该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: * @ - _ + . / 。其他所有的字符都会被转义序列替换。

    如:

    <script type="text/javascript">
      document.write(escape("Visit W3School!") + "<br />")    /* Visit%20W3School%21 */
      document.write(escape("?!=()#%&"))                      /* %3F%21%3D%28%29%23%25%26 */
    </script>

    6. unescape("string");

    对 escape() 编码的字符串进行解码。

    <script type="text/javascript">
      var test1="Visit W3School!"
      test1=escape(test1)
      document.write (test1 + "<br />")     /* Visit%20W3School%21 */
    
      test1=unescape(test1)
      document.write(test1 + "<br />")      /* Visit W3School! */
    </script>

    7. eval("string");

    • 当参数 string 是一个表达式时,eval() 函数将执行表达式,并返回计算结果。
    • 当参数 string 是 JavaScript 脚本时,则执行相应的脚本。

    如:

    var str="3000+500*2";
    document.write(eval(str));     /* 显示 4000 */

    8. alert("message");

    用于显示带有一条指定消息和一个 OK 按钮的警告框。

    9. confirm("message");

    用于显示一个带有指定消息和 OK 及取消按钮的对话框。

    10. prompt("text",defaultText); 

    用于显示一个可供用户进行输入的对话框。

    "text",可选,对话框中显示的纯文本。

    "defaultText",可选,默认的输入文本。

     

    自定义函数

    JavaScript 中除了可以使用预定义函数外,还可以使用自定义函数。

    在自定义函数时既不需要声明函数的参数类型,也不需要声明函数的返回类型。

    JavaScript 目前支持的自定义方式有:

    命名函数

    匿名函数

    对象函数

    自调函数

    1. 命名函数

    • 命名函数通过 function 关键词进行定义,其后是函数名和括号 ()。 
    • 完成函数的定义后,函数并不会自动执行,只有通过事件或脚本调用时才会执行。
    • 在同一个 <script></script> 标签中,函数的调用可以在函数定义之前,也可以在函数定义之后。
    • 在不同的 <script></script> 标签中,函数的定义必须在函数的调用之前,否则调用无效。

    格式如下:

    function funcName([parameters]){
      statements;
      [return 表达式;]
    }

    2. 匿名函数

    • 匿名函数的定义格式与命名函数基本相同,只是没有提供函数的名称,并且结束位置应有分号;  。由于没有函数名字,所以需要使用变量对匿名函数进行接受,方便后面函数的调用。
    • 命名函数对初学者来说,上手容易,但可读性较差。匿名函数使用相对更加方便,可读性更好,当前比叫流行的 JavaScript 框架基本上都采用匿名函数的方式来定义函数。

    格式如下:

    var x=function([parameters]){
      statements;
      [return 表达式;]
    };

    3. 对象函数

    JavaScript 提供了 Function 类,用于定义函数。格式如下:

    var func1=new Function([parameters],statements;);
    • Function 是用来定义函数的关键字,首字母必须大写。
    • parameters 为函数参数,可选。当有多个参数时,参数之间用逗号, 隔开。
    • statements 为函数执行体。当有多条执行语句时,语句之间以分号; 隔开。

    4. 自调用函数

    一般情况下,函数本身不会自动执行,只有调用时才会被执行。所以 JavaScript 提供了一种自调用函数,将函数的定义与调用一并实现。格式如下:

    (function([parameters]){
      statements;
      [return 表达式;]
    })([params]);
    • 需要使用小括号() 将自调函数括起来,并以分号; 结束。
    • parameters 为形参,可选。参数之间以逗号, 隔开。
    • params 为实参,在函数调用时传入数据。

    代码示例:

    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="UTF-8">
      <title>test</title>
    </head>
    <body>
      <input id="btn1" type="button" onclick="button1Event()" value="button1" />
      <input id="btn2" type="button" onclick="button2Event()" value="button2" /><br />
      <input id="a" type="text"/><input id="b" type="text"/><br />
      <input id="sumBtn" type="button" value="x+y" onclick="sum()"/>
      
      <script type="text/javascript">
        function button1Event(){/* 命名函数 */
            alert("命名函数:按钮1被点击!");
        }
        var x=function(){/* 匿名函数 */
            alert("匿名函数:按钮2被点击!");
        }
        button2Event=x;
        
        var y=new Function("a", "b", "return a+b");/* 对象函数 */
        sum=function(){
            var aValue=parseInt(document.getElementById("a").value,10);
            var bValue=parseInt(document.getElementById("b").value,10);
            alert("对象函数:"+y(aValue,bValue));
        }
        
        var tema=2;var temb=2;
        (function(a,b){/* 自调函数 */
            alert("自调函数:"+(a+b));
        })(tema,temb);
      </script>
    </body>
    </html>

    效果演示:

     

     

     

     

  • 相关阅读:
    简要描述客户端发送的http request header都包含哪些内容
    如何利用TestNG监听器优化测试报告
    TestNG 监听器 ITestListener
    p3317 [SDOI2014]重建
    EZOJ #387字符串
    EZOJ #386 最小生成树
    EZOJ #385 排列
    EZOJ #375高速公路
    EZOJ #374学习
    EZOJ #373排序
  • 原文地址:https://www.cnblogs.com/bjxqmy/p/12934614.html
Copyright © 2020-2023  润新知