式と文


JAvascriptには2つの代表的な構文カテゴリがあります.
  • ステータス(記事)
  • Expressions(式)
  • 式は文のように動作するので、両者の区別が重要です.
    それが表現文がある理由です.
    しかし逆に、文字は式のように動くことはできません.
    式(Expressions)
    式は値を生成します.
    式は、1つの値にまとめられたJavaScriptコードセグメントです.
    式は必要に応じて長くなりますが、必ずしも同じ値ではありません.
    2 + 2 * 3 / 2
    
    (Math.random() * (100-20)) + 20
    
    functionCall()
    
    window.history ? useHistory() : noHistoryFallback()
    
    1+1, 2+2, 3+3
    
    declaredVariable
    
    true && functionCall()
    
    true && declaredVariable
    上のすべてのコードは式です.
    また、式はJavaScriptコードの値がある任意の場所に配置できます.
    次のコンソールはログのパラメータは、コンソールに記録されたときに値になります.
    console.log(true && 2 * 9) // 18
    式は必ずしも状態を変える必要はありません.
    たとえば、
    const assignedVariable = 2; // 이건 문장(Statement)입니다. assignedVariable은 상태입니다.
    
    assignedVariable * 4 // 표현식(Expression)입니다.
    
    assignedVariable * 10 // 표현식(Expression)입니다.
    
    assignedVariable - 10 // 표현식(Expression)입니다.
    
    console.log(assignedVariable) // 2
    上記の短いコードのすべての式にもかかわらず、assignedVariableの値は2です.
    したがって、関数呼び出しが式であるため、このセクションのタイトルに「必須」という言葉が表示されるのはなぜですか.
    ただし、関数には値を変更する文を含めることができます.
    foo内部のfoo()関数は、未定義または他の値を返すことができる式である.
    しかしfooが以下のように記述されている場合、
    const foo = foo () => {
    	assignedValue = 14
    }
    この場合、呼び出しfooが式であっても、関数を呼び出すとステータスが最終的に変化します.
    したがってfoo関数をよりよく書き換えるには、文(statement)は次のようになります.
    関数は式を変更することはできません.式は状態を変更することはできません.->箱の中には値を変える文が含まれていますか?
    const foo = foo () => {
    	return 14 // 가독성을 위한 명시적 반환
    }
    
    assignedVariable = foo()
    もっと良い方法で
    const foo = foo (n) => {
    	return n // 가독성을 위한 명시적 반환
    }
    
    assignedVariable = foo(14)
    この文章はもっと読みやすくて、ある場所に挟むのに適していて、表現と文の間に明らかな違いがあります.これが宣言的で関数的なJavaScriptの基礎です.
    ステートメント
    関数式プログラミングの観点から見ると、文章は面倒だ.
    基本的に、文章は何を実行しているのか.
    javascriptでは、文は値を入力する場所に入ることができません.
    したがって,それらは関数のパラメータとしても代入演算の値としても,演算子の被演算子としても用いられない.
    foo(if () {return 2}) 
    JavaScriptの文は次のようになります.
    1. if
    2. if-else
    3. while
    4. do-while
    5. for
    6. switch
    7. for-in
    8. with (deprecated)
    9. debugger
    10. variable declaration
    ブラウザコンソールに次のコードを入力しenterを入力しますか?
    i( true ) {9+9} 
    18が反撃されたのを見るかもしれません.
    ただし、この結果を式として使用することはできません.JavaScriptコードの値がある場所に入れることはできません.
    この結果はおかしい.
    私たちは文章が何も返さないと予想しているからだ.
    返された値を使用できない場合、文は値を返す意味がありません.これがJavaScriptです
    関数宣言、関数式、名前付き関数式
    関数宣言は文です.
    function foo (func) {
    	return func.name;
    }
    関数式は式です.匿名関数と呼ぶものです
    console.log(foo(function(){})); //""
    名前付き関数式は式です.匿名関数のように
    しかし、この関数は名前が付けられています.
    console.log(foo(function myName () {} )); // "myName"
    式としての関数と宣言としての関数の区分は以下のように要約される.
    javascriptで関数の値を宣言するたびに、javascriptは値として処理しようとします.この関数を値として使用できない場合は、エラーが発生します.
    逆に、スクリプト、モジュール、ブロック文(JavaScriptに値を入力しない場所)のグローバルフェーズ宣言関数は、結果として関数宣言になります.
    if () {
      function foo () {} // 블록의 가장 상위 레벨, 함수 선언
    }
    
    function foo () {} // 전역 레벨, 함수 선언
    
    function foo () {
      function bar () {} // 블록의 가장 상위 레벨, 함수 선언
    }
    
    function foo () {
      return function bar () {} // 네임드 함수 표현식  
    }
    
    foo(function () {}) // 익명 함수 표현식
    
    function foo () {
      return function bar () {
        function baz () {} // 블록의 가장 상위 레벨, 함수 선언  
      }
    }
    
    function () {} // 문법 에러: 함수 문장(statement)은 이름이 필요합니다.
    式を文に変換:式文
    2+2; // expression statement
    foo(); // expression statement
    式を式文に変換できます.
    後ろにセミコロンを付けるだけです.
    2+2自体が式です.
    しかし、行自体が式文です.
    2+2 // 그 자체로는 표현식입니다.
    
    foo(2+2) // 그래서 어디든 값이 들어가야 할 곳에서 사용할 수 있죠.
    
    true ? 2+2 : 1 + 1
    
    function foo () {return 2+2}
    
    2+2; // 표현식 문장(Expression Statements)
    foo(2+2;) // 문법 에러(Syntax Error)
    セミコロンvsカンマ演算子
    セミコロンをつけると、複数行の文を1行に置くことができます.
    const a; function foo () {}; const b = 2;
    カンマ演算子は、複数の式を接続するのに役立ちます.戻りは最後の式のみを返します.
    console.log( (1+2, 3, 4) ) // 4
    
    console.log( (2, 9/3, function () {}) ) //function () {}
    
    console.log( (3, true ? 2+2 : 1+1) ) // 4
    JavaScriptエンジンに値を渡すときに、()を介して値を入力する必要がある場所に値を渡すのが良いことを知っておく必要があります.カッコがない場合は、それぞれconsoleです.logのパラメータとして送信します.
    function foo () {return 1, 2, 3, 4}
    foo() // 4
    すべての式は左から右に計算されます.そして最後に返された.
    IIFEの関数式を今すぐ呼び出す
    匿名関数は式として使用できます.
    javascriptの値の場所でカッコを使用できる場合は、匿名関数を値の場所に渡すことができます.
    function() {}
    上のコードは無効で、下のコードは有効です.
    次のコードは有効です.
    (function() {}) // function() {} 를 리턴한다.
    匿名関数をかっこに入れると、すぐに同じ匿名関数が返されます.
    この関数を直接呼び出すことができるという意味です.
    (function(){
    	// do something
    })()
    そのため、次のような場合もあります.
    (function () {
    	console.log('익명함수 즉시 호출');
    })() // '익명함수 즉시 호출'
    
    (function(){
    	return 3;
    })() // 3
    
    console.log(
    	(function(){
    		return 3
    	})()
    ) // 3
    
    // 인자를 넘길 수도 있다.
    (function(a){
    	return a;
    })('저는 인자입니다.') // 저는 인자입니다.
    
    オブジェクト文字vsブロック文字
    注:文字自体が価値を意味します.
    サイドノート:次のコードは有効なJavaScriptです.
    r : 2+2 // 유효함
    foo()
    const foo = () => {}
    グローバル範囲内にある上記の文は、有効なJavaScript実行に変更されます.rはlabelと呼ばれています.ブレークリングを構築するときに役立ちます.
    loop : {
    	for(const i = 0; i < 2; i++) {
    		for(const n = 0; n < 2; n++) {
    			break loop; // 바깥 루프를 중단하여 전체 루프를 중단
    		}
    	}
    }
    式または式文にラベルを貼ることもできます.
    次の例は、ラベルの作成が変数の作成ではないことを示しています.
    lab : function a () {}
    console.log(lab) // ReferenceError : lab is not defined 
    {}のような括弧は、文と式の文を組み合わせるのに役立ちます.
    次のように記述できます.
    {var a = 'b'; func(); 2+2} // 4
    上記の内容をブラウザコンソールに貼り付けると、4が返されます.
    そしてconsole.log(a)を打ってbに戻ります.これをブロック文と呼ぶことができます.
    私たちがよく知っているオブジェクト文字とは違います
    console.log({a:'b'}) // {a:'b'} 오브젝트 리터럴
    console.log({var a = 'b', func(),2+2}) //SyntaxError 블록문장
    const obj = {var a = 'b', func(), 2+2} //SyntaxError 블록문장 
    ブロック文は値または式として使用できません.
    console.logは文をパラメータとして受け入れない関数
    ただし、オブジェクトテキストはパラメータとして使用できます.
    {} + 1 // 1
    
    {2} + 2 // 2
    
    {2+2} + 3 // 3
    
    {2+2} - 3 // -3
    上のコードはゲート番号エラーを予測したり、1、4、7などの数字を返したりするかもしれません.
    文章には何も返却する規定はない.
    値段に使えないから.
    したがって、JavaScriptはerrorをエクスポートするのではなく、+演算子の被演算子を数値または文字列に置き換えます.
    変更できない値の場合はエラーが発生します.
    ブロック文が何を返しても、デフォルトでは0に強制的に変換され、被演算子として使用されます.
    Javascriptでは、Expressions、Statement、Expressionsについては、これらを理解するだけです.
    🔍 ブログ
    JavaScript開発者として知りたい33の概念#7式と文(翻訳)