zoukankan      html  css  js  c++  java
  • JavaScript函数表达式 学习篇

    定义函数的方式有两种,一种是函数声明,另一种就是函数表达式。

    函数声明的语法:

    function sayHello(){
        alert("hello")
    }

    首先是function关键字,然后是函数名。

    函数声明提升:可以先调用函数,而函数声明放在其后,因为执行函数前会读取函数声明

    sayHello();
    function sayHello(){
        alert("hello")
    }

    接下来是函数表达式创建函数的方法:

    var sayHello = function(){
        alert("hello")
    }
    sayHello();

    这样创建的函数也成为 匿名函数(拉姆达函数) 因为function后面没有标识符。

    当然了,用函数表达式创建的函数就不能像上面函数表达式创建的函数一样 先调用函数 再声明了 会报错(函数还不存在)。

    千万不要这么做:

    var a = false;
    if (a) {
        function sayHello(){
            alert("hello")
        }
    }else{
        function sayHello(){
            alert("a is false")
        }
    };

    表面上根据a的boolean值返回不同的函数,但是大多数浏览器会返回第二个声明(火狐会在a为true时返回第一个声明)。

    那怎么办呢 , 使用函数表达式就没问题了:

    var a = false;
    var sayHello;
    if (a) {
        sayHello = function(){
            alert("hello")
        }
    }else{
        sayHello = function(){
            alert("a is false")
        }
    };

    不同的函数会根据a的boolean值被赋值给sayHello。

    能创建函数再赋值给变量,也就意味着函数可以作为其它函数的返回值返回:

    function returnFunction(){
        return function subFunction(){
            alert("son function")
        }
    }
    var a = returnFunction()
    alert(a.name)

    a.name = subFunction,还可以返回匿名函数:

    function returnFunction(name){
        return function(){
            return name
        }
    }
    var a = returnFunction("white55开")
    var b = a()
    alert(b) 

    b = "white55开"

    这并不是匿名函数唯一的用途,更多用途会在开发中遇到

  • 相关阅读:
    各操作系统各文件系统支持的最大文件的大小
    Java调用百度地图API
    Java面试宝典(3)Java基础部分
    Java7中的try-with-resources
    Spring学习笔记(6)——IoC的三种注入方式
    cmd中java的编译命令——java和javac、javap
    Spring学习笔记(14)——注解零配置
    java中多种方式解析xml
    双三次插值
    RCNN到faster RCNN 简介
  • 原文地址:https://www.cnblogs.com/cherrylv/p/6322047.html
Copyright © 2011-2022 走看看