zoukankan      html  css  js  c++  java
  • 让函数执行的各种方式

    ;(function() {
        /**
         * 先声明一个函数。
         * 注意执行的时候不能直接花括号后面加括号执行,因为解析器会把它当作一个函数声明。
         * @param  {String} msg
         * @return {[type]}
         */
        function common(msg) {
            console.info(msg + "先声明函数,再调用!")
        }
    
        /**
         * 常用执行方式。先声明函数,再用一条语句,并在方法名后加()
         */
        common("常用调用方式,");
    
        /**
         * 通过call调用,普通函数跟构造函数,均可以通过call调用
         */
        common.call(null, "常用调用方式,");
    
        /**
         * 通过apply调用,普通函数跟构造函数,均可以通过apply调用
         */
        common.apply(null, ["常用调用方式,"]);
    
    
    
    
        /**
         * 将函数转化为表达式
         * 将函数转化为表达式的方式有很多,括弧()和JavaScript的&&,异或,逗号,+,-,~,!,new,void等操作符可在函数表达式和函数声明之间消除歧义
         */
        
        /**
         * 函数外加一个括号,将其转化为函数表达式
         * @param  {String} msg 参数
         * @return {[type]}   [description]
         */
         (function(msg) {
             console.info(msg + "先声明函数,再调用!")
         })("常用调用方式,");
    
        /**
         * 函数后紧接着一个括号,并在外层再套一个括号,将其转化为函数表达式并执行
         */
        (function(msg) {
            console.info(msg + "先声明函数,再调用!")
        } ("常用调用方式,"));
    
        /**
         * 命名函数表达式,可直接在后面加括号并传入参数(如果有参数)
         * @param  {[String]} msg [description]
         * @return {[type]}     [description]
         */
        var common1 = function common(msg) {
            console.info(msg + "先声明函数,再调用!")
        } ("常用调用方式,");
    
        /**
         * 匿名函数表达式,可直接在后面加括号并传入参数(如果有参数)
         * @param  {[String]} msg [description]
         * @return {[type]}     [description]
         */
        var commonn2 = function(msg) {
            console.info(msg + "先声明函数,再调用!")
        } ("常用调用方式,");
    
        /**
         * 通过void操作符,将其转化为表达式,后接一括号,让其执行
         * @param  {[String]} msg [description]
         * @return {[type]}     [description]
         */
        void function(msg) {
            console.info(msg + "先声明函数,再调用!")
        } ("常用调用方式,");
    
        /**
         * 通过new操作符,将其转化为表达式,后接一括号,让其执行
         * @param  {String} msg [description]
         * @return {[type]}     [description]
         */
        new function(msg) {
            console.info(msg + "先声明函数,再调用!")
        } ("常用调用方式,");
    
        /**
         * 通过&&操作符,将其转化为表达式,后接一括号,让其执行
         * @param  {String} msg [description]
         * @return {[type]}     [description]
         */
        true && function(msg) {
            console.info(msg + "先声明函数,再调用!")
        } ("常用调用方式,");
    
        /**
         * 通过逗号操作符,将其转化为表达式,后接一括号,让其执行
         * 前面加一分号是为了将其与前面语句区分开来
         * @param  {String} msg [description]
         * @return {[type]}     [description]
         */
        ; true, function(msg) {
            console.info(msg + "先声明函数,再调用!")
        } ("常用调用方式,");
    
        /**
         * 通过加号操作符,将其转化为表达式,后接一括号,让其执行
         * 前面加一分号是为了将其与前面语句区分开来
         * @param  {String} msg [description]
         * @return {[type]}     [description]
         */
        ; +function(msg) {
            console.info(msg + "先声明函数,再调用!")
        } ("常用调用方式,");
    
        /**
         * 通过减号操作符,将其转化为表达式,后接一括号,让其执行
         * 前面加一分号是为了将其与前面语句区分开来
         * @param  {String} msg [description]
         * @return {[type]}     [description]
         */
        ; -function(msg) {
            console.info(msg + "先声明函数,再调用!")
        } ("常用调用方式,");
    
        /**
         * 通过~操作符,将其转化为表达式,后接一括号,让其执行
         * 前面加一分号是为了将其与前面语句区分开来
         * @param  {String} msg [description]
         * @return {[type]}     [description]
         */
        ; ~function(msg) {
            console.info(msg + "先声明函数,再调用!")
        } ("常用调用方式,");
    
        /**
         * 通过!操作符,将其转化为表达式,后接一括号,让其执行。如果返回的是布尔类型,不要用这种方式执行,
         * 前面加一分号是为了将其与前面语句区分开来
         * @param  {String} msg [description]
         * @return {[type]}     [description]
         */
        ; !function(msg) {
            console.info(msg + "先声明函数,再调用!")
        } ("常用调用方式,");
    
    }())
  • 相关阅读:
    十七、S3C2440 音频解码芯片WM8976声卡驱动移植、madplay测试
    2.3 摄像头驱动_vivi驱动程序分析
    3.1 wifi网卡RT3070在S3C2440的移植和使用
    项目简介
    2.2 vivi虚拟视频驱动测试
    2.1 摄像头V4L2驱动框架分析
    LCD驱动程序编写
    LCD驱动程序
    1. Linux内核的配置与裁减:
    第5章 docker run、exec和attach使用和区别
  • 原文地址:https://www.cnblogs.com/qianduanjingying/p/5527437.html
Copyright © 2011-2022 走看看