zoukankan      html  css  js  c++  java
  • 理顺 JavaScript (17) 函数


    函数的名称
    function fun() {
      alert(123);
    }
    fun();       //123
    
    f = function() {
      alert(123);
    }
    f();         //123
    
    msg = alert;
    msg(123);    //123
    

    函数的返回值
    function fun() {
      var num = 1;
      return num; //函数可以没有 return; 如果有 之后的代码不会被执行
      num++;
      return num;
    }
    
    var r = fun();
    alert(r); //1
    

    函数的既定参数和实际参数
    /* 预定参数的个数 */
    function fun(a, b, c, d) {
      alert(fun.length);              /* 预定参数个数 */
      alert(arguments.callee.length); /* 也可以这样, arguments.callee 标识当前函数 */
    }
    fun(11, 22); //4 / 4
    
    
    /* 实际参数的个数、遍历参数 */
    function fun(a, b, c, d) {
      alert(arguments.length); //实际参数个数
      
      for (var i=0; i < arguments.length; i++) {
        alert(arguments[i]);
      }
    }
    fun(11, 22, 33); //3 / 11 / 22 / 33
    
    
    /* 不确定参数求和 */
    function fun() {
      var num = 0;
      for (var i=0; i < arguments.length; i++) {
         num += arguments[i];
      }
      return num;
    }
    alert(fun(11, 22, 33)); //66
    

    this 表示调用函数的对象
    <div name='MyDiv' onclick="alert(this.name);">aaaaaa</div> //点击会显示: MyDiv
    

    caller 表示调用该函数的函数
    function fun1() {
      return arguments.callee.caller.arguments[0]; //或写作: fun1.caller.arguments[0];
    }
    
    function fun2() {
      alert(fun1());
    }
    
    fun2(11, 22); //11
    

    call、apply
    function sum(a, b, c) {
      alert(a+b+c);
    }
    
    sum(1, 2, 3);               //6
    sum.call(null, 1, 2, 3);    //6
    sum.apply(null, [1, 2, 3]); //6
    
    //call 与 apply 都是调用函数的方式, 这里 null 以外的是函数的参数; apply 需要把参数写在数组里; 其目的就是重置第一个参数.
    
    //call 与 apply 的第一个参数表示调用该函数的对象, null 表示无调用对象; 譬如:
    function msg(s) {
      alert(s + ' ' + this.toString());
    }
    
    var str = 'ABC';
    var num = 123;
    
    msg.call(str, 'Hi'); //Hi ABC
    msg.call(num, 'Hi'); //Hi 123
    

    使用 Function 类创建函数
    var fun = new Function('alert(123)');
    fun(); //123
    
    var fun = new Function('a,b', 'return a+b');
    alert(fun(11, 22)); //33
    

    一个关于闭包的小例子
    function fun(x) {
      return function(y) {return x+y;}
    }
    
    var a,b,c;
    a = fun(1);
    b = fun(2);
    c = fun(3);
    
    alert(a(1)); //2
    alert(b(2)); //4
    alert(c(3)); //6
    

    eval : 这是一个全局函数, 它执行字符串中的 JS 代码并返回结果
    var str = '((1 + 2) * 3 - 1) / 4';
    alert(eval(str)); //2
    

  • 相关阅读:
    Freemaker:操作集合
    win10:在关闭防火墙下如何屏蔽特定端口
    win10:家庭版开启组策略
    oracle:10g下载地址(转载)
    mybatis:延迟加载时不要在get/set方法上面添加final关键字(原创)
    mybatis:在springboot中的配置
    mybatis:访问静态变量或方法
    maven:手动安装JAR到本地仓库
    datatables日常使用集合
    python 装饰器
  • 原文地址:https://www.cnblogs.com/del/p/1403201.html
Copyright © 2011-2022 走看看