• Javascript中匿名函数的多种调用方式


    avascript中定义函数的方式有多种,函数直接量就是其中一种。如var fun = function(){},这里function如果不赋值给fun那么它就是一个匿名函数。好,看看匿名函数的如何被调用。

     

    方式1,调用函数,得到返回值。强制运算符使函数调用执行

    1
    2
    3
    4
    (function(x,y){
        alert(x+y);
        return x+y;
    }(3,4));

     

    方式2,调用函数,得到返回值。强制函数直接量执行再返回一个引用,引用再去调用执行

    1
    2
    3
    4
    (function(x,y){
        alert(x+y);
        return x+y;
    })(3,4);

    这种方式也是很多库爱用的调用方式,如jQueryMootools

     

    方式3,使用void

    1
    2
    3
    4
    void function(x) {
          x = x-1;
          alert(x);
    }(9);

     

    方式4,使用-/+运算符

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    -function(x,y){
        alert(x+y);
        return x+y;
    }(3,4);
     
    +function(x,y){
        alert(x+y);
        return x+y;
    }(3,4);
     
    --function(x,y){
        alert(x+y);
        return x+y;
    }(3,4);
     
    ++function(x,y){
        alert(x+y);
        return x+y;
    }(3,4);

     

    方式5,使用波浪符(~)

    1
    2
    3
    4
    ~function(x, y) {
        alert(x+y);
       return x+y;
    }(3, 4);

     

    方式6,匿名函数执行放在中括号内

    1
    2
    3
    [function(){
       console.log(this// 浏览器得控制台输出window
    }(this)]

     

     方式7,匿名函数前加typeof

    1
    2
    3
    typeof function(){
       console.log(this// 浏览器得控制台输出window
    }(this)

     

    方式8,匿名函数前加delete

    1
    2
    3
    delete function(){
       console.log(this// 浏览器得控制台输出window
    }(this)

     

    方式9,匿名函数前加void

    1
    2
    3
    void function(){
       console.log(this// 浏览器得控制台输出window
    }(this)

     

    方式10,使用new方式,传参

    1
    2
    3
    new function(win){
       console.log(win) // window
    }(this)

      

    方式11,使用new,不传参

    1
    2
    3
    new function(){
        console.log(this// 这里的this就不是window了
    }

     

    方式12,逗号运算符

    1
    2
    3
    1, function(){
        console.log(this// window
    }();

     

    方式13,按位异或运算符

    1
    2
    3
    1^function(){
        console.log(this// window
    }();

     

    方式14,比较运算符

    1
    2
    3
    1>function(){
        console.log(this// window
    }();

     

     

    最后看看错误的调用方式

    1
    2
    3
    4
    function(x,y){
        alert(x+y);
        return x+y;
    }(3,4);
     
    相关:
  • 相关阅读:
    功能测试用例大全
    相对最完整的软件测试工具手册
    测试用例的评审
    黑盒测试学习笔记-(深圳文鹏)
    Llinux:ubuntu常用命令(深圳文鹏)
    HDU-4857(拓扑排序)
    HDU-3665(单源最短路)
    HDU-3661(贪心)
    HDU-2059龟兔赛跑(基础方程DP-遍历之前的所有状态)
    HDU-1047(DP-二进制状态压缩)
  • 原文地址:https://www.cnblogs.com/xiaohong/p/4460208.html
Copyright © 2020-2023  润新知