• JavaScript的函数


    函数创建的方法: 
    1.函数声明

            function a(){
                函数体 
            }

    2.函数表达式

            var a = function(){
                函数体
            }
            使用条件: (1)、函数当成值,赋值给变量 
                     (2)、创建了一个对象,给obj,添加一个方法 
                     (3)、当一个函数,被作为一个回调函数

    3.命名函数表达式

            var a = function b(){
                函数体
                //可以访问到b函数,而在函数外面,是访问不到b的;和函数声明有很大的不同,递归中可能会用到
            }

    4.箭头函数

     (a,b)=>{return a+b}
     如果只有一个参数,可以省略()
     a=>{return a++}
     如果函数体只有一条,可以省略{}
     a=> a++

    5.函数生成器 ES6中

    function* quips(name) {
      yield "你好 " + name + "!";
      yield "希望你能喜欢这篇介绍ES6的译文";
      if (name.startsWith("X")) {
        yield "你的名字 " + name + "  首字母是X,这很酷!";
      }
      yield "我们下次再见!";
    }
    
    普通函数使用function声明,而生成器函数使用function*声明。
    在生成器函数内部,有一种类似return的语法:关键字yield。
    二者的区别是,普通函数只可以return一次,而生成器函数可以yield多次(当然也可以只yield一次)。
    在生成器的执行过程中,遇到yield表达式立即暂停,后续可恢复执行状态。

    6.函数构造器-不推荐 1、写起来太复杂2、出入的字符串需要eval解析,效率低

    var a = new Function('a','b','return a+b');

    函数声明,转化成立即执行函数(IIFA)的几种方法: 
    立即执行函数的优点:1、解决作用域下,命名污染的问题;2、对整个程序的性能有提升,减少了对作用域的查找;3、有利于压缩;4、避免全局命名的冲突 5、保存闭包状态 6、使用UMD结构,去颠倒代码运行顺序

            // 使用操作符
            (function(){
                console.log(1111);
            })();
            (function(){
                console.log(1111);
            }());
    
            var a = function(){
                console.log(2222);
            }();
    
            true&&function(){
                console.log(3333);
            }();
    
            false||function(){
                console.log(4444);
            }();
    
            0,function(){
                console.log(5555);
            }();
    
            // 使用一元运算符 + - ~
            +function(){
                console.log(6666);
            }();
            -function(){
                console.log(7777);
            }();
            ~function(){
                console.log(8888);
            }();
            !function(){
                console.log(8888);
            }();
    
            new function(){
                console.log(9999);
            };
    
            一元运算符转化的效率低一些,不如操作符
    
  • 相关阅读:
    SpringCloud (Finchley版本)教程(四):断路器(Hystrix)
    SpringCloud (Finchley版本)教程(三):服务消费者(Feign)
    SpringCloud (Finchley版本)教程(二): 服务消费者(rest+ribbon)
    SpringCloud (Finchley版本)教程(一): 服务的注册与发现Eureka
    CF1392H ZS Shuffles Cards 题解
    2020杭电多校第六场题解
    2020杭电多校第五场题解
    2020杭电多校第四场题解
    Educational Codeforces Round 92 (Rated for Div. 2)题解
    D. Recover it!(模拟,数学)
  • 原文地址:https://www.cnblogs.com/d-z-j-boke/p/9552268.html
Copyright © 2020-2023  润新知