zoukankan      html  css  js  c++  java
  • Javascript中匿名函数的多种调用方式

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

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

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

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

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

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

    方式3,使用void

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

    方式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);
    
    ++function(x,y){
        alert(x+y);
        return x+y;
    }(3,4);
    

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

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

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

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

     方式7,匿名函数前加typeof

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

    方式8,匿名函数前加delete

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

    方式9,匿名函数前加void

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

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

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

      

    方式11,使用new,不传参

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

    方式12,逗号运算符

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

    方式13,按位异或运算符

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

    方式14,比较运算符

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

    最后看看错误的调用方式

    function(x,y){
        alert(x+y);
        return x+y;
    }(3,4);
    
     
    相关:
  • 相关阅读:
    android studio常用快捷键
    html5开发之viewport使用
    Android之 -WebView实现离线缓存阅读
    Android总结篇系列:Activity生命周期
    设计模式系列(0)
    通过Jni实现AES的CBC模式加密解密
    Android Studio通过JNI调用NDK程序
    Android Studio] Gradle项目中添加JNI生成文件(.so文件)
    Android Studio开发JNI工程
    Java中RSA非对称密钥加解密使用示例
  • 原文地址:https://www.cnblogs.com/snandy/p/1966664.html
Copyright © 2011-2022 走看看