• 理顺 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
    

  • 相关阅读:
    System path '/Users/hxy/Library/Caches/PyCharm2018.2' is invalid.
    HBase安装指南
    centos6.8下hadoop3.1.1完全分布式安装指南
    PHP服务化搭建之nginx动静分离实战
    Laravel6实现第三方 微信登录
    laravel开发大型电商网站之异常设计思路分析
    Laravel实现大型商城网站之用户注册短信发送项目实战功能开发
    Redis 实现美团的外卖派单系统“附近的人”筛选实战原理分析
    Navicat远程连接MySQL8,必知防坑策略
    laravel大量填充项目测试数据的正确方法
  • 原文地址:https://www.cnblogs.com/del/p/1403201.html
Copyright © 2020-2023  润新知