zoukankan      html  css  js  c++  java
  • NFE

    Named Function Expression

    1 let sayHi=function fname(who) {
    2     alert(`hello, ${who}`);
    3 };
     1 let sayHi = function fname(who) {
     2   if (who) {
     3     alert(`Hello, ${who}`);
     4   } else {
     5     fname("Guest"); // 使用 func 再次调用函数自身
     6   }
     7 };
     8 
     9 sayHi(); // Hello, Guest
    10 
    11 // 但这不工作:
    12 fname(); // Error, func is not defined(在函数外不可见)

    fname("fly"); 

    fname就是函数的名字,fname()就是在调用函数。

    注意,函数本身包含这条语句,但这条语句又调用了这个函数,难道还要继续调用自己吗?
    答案是否定的,因为这样毫无意义。

    看起来就像函数在自己的身体内部又生了个自己。

    利用fname调用函数的方式只能在函数内部使用,在外部调用无效。

    为何要使用fname?

    sayHi是一个变量,它引用一个函数。

    改变它的指向,使它指向null,也就是不指向任何函数。

    let welcome=sayHi;

    此时sayHi就代表了函数,所以将其看成函数是极其重要的,所谓看山不是山。

    welcome变量指向了这个函数。

    如果使用welcome()调用此函数,此时,函数内部中的“自我调用”sayHi("fly")"就无效了,因为sayHi啥也是现在。

    fname具备函数作用域,只引用当前函数。

  • 相关阅读:
    教你作一份高水准的简历
    python并发
    阻塞,非阻塞,同步,异步
    python三层架构
    paramiko与ssh
    python-进程
    生产者消费者模型
    python-线程
    python-socket
    python-mysql
  • 原文地址:https://www.cnblogs.com/flyover/p/14149199.html
Copyright © 2011-2022 走看看