JavaScriptの名前付き式

近期一直在看汤姆大叔写的博文,他所介绍的知识点与理论较为清晰,命名函数表达式是我之前从没有去进行深究过的原理,虽然已多次在项目中使用javascript,但基础还是不都扎实,多看多思多想是一直必须坚持的。这篇文章作为学习笔记,很多知识点都是汤姆大叔所总结的,汤姆大叔博客链接在文末。

関数宣言:関数関数名(パラメーター:オプション){関数本体}
関数式:関数関数名(オプション)(パラメーター:オプション){関数本体}
関数名が宣言されていない
場合は、関数foo( ){}は、割り当て式の一部としての関数式です。関数foo(){}が関数本体またはプログラムの先頭に含まれている場合は、関数宣言です。

function foo(){
    
    }//声明,因为是程序的一部分
var bar=function foo(){
    
    };//表达式,赋值表达式
new function bar(){
    
    };//表达式,new表达式
(function(){
    
    //表达式,()是一个分组操作符,它的内部只能包含表达式
    function bar(){
    
    }//声明,函数体的一部分
})();

違い:
1。関数宣言は、式が解析および評価される前に解析および評価されます。注:関数宣言は条件ステートメントで使用できますが、環境が異なれば実行結果も異なる場合があります。関数式を使用することをお勧めします。
2.関数宣言は、プログラムまたは関数本体にのみ表示され、ブロックには表示されません(if、while、forステートメント)
。3。関数ステートメントは、変数の初期化中ではなく、実行時に宣言されます(関数式と同じ式を使用)。関数ステートメントの識別子が宣言されると、関数のスコープ全体で有効になります。

// 此刻,foo还没用声明
  typeof foo; // "undefined"
  if (true) {
    // 进入这里以后,foo就被声明在整个作用域内了
    function foo(){
    
     return 1; }
  }
  else {
    // 从来不会走到这里,所以这里的foo也不会被声明
    function foo(){
    
     return 2; }
  }
  typeof foo; // "function"

おすすめ

転載: blog.csdn.net/zn740395858/article/details/70316422