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具备函数作用域,只引用当前函数。

  • 相关阅读:
    loj#6433. 「PKUSC2018」最大前缀和(状压dp)
    PKUWC2019游记
    10. Regular Expression Matching
    9. Palindrome Number
    8. String to Integer (atoi)
    7. Reverse Integer
    6. ZigZag Conversion
    5. Longest Palindromic Substring
    4. Median of Two Sorted Arrays
    3. Longest Substring Without Repeating Characters
  • 原文地址:https://www.cnblogs.com/flyover/p/14149199.html
Copyright © 2011-2022 走看看