式と文
30383 ワード
JAvascriptには2つの代表的な構文カテゴリがあります.ステータス(記事) Expressions(式) 式は文のように動作するので、両者の区別が重要です.
それが表現文がある理由です.
しかし逆に、文字は式のように動くことはできません.
式(Expressions)
式は値を生成します.
式は、1つの値にまとめられたJavaScriptコードセグメントです.
式は必要に応じて長くなりますが、必ずしも同じ値ではありません.
また、式はJavaScriptコードの値がある任意の場所に配置できます.
次のコンソールはログのパラメータは、コンソールに記録されたときに値になります.
たとえば、
したがって、関数呼び出しが式であるため、このセクションのタイトルに「必須」という言葉が表示されるのはなぜですか.
ただし、関数には値を変更する文を含めることができます.
foo内部の
しかしfooが以下のように記述されている場合、
したがってfoo関数をよりよく書き換えるには、文(statement)は次のようになります.
関数は式を変更することはできません.式は状態を変更することはできません.->箱の中には値を変える文が含まれていますか?
ステートメント
関数式プログラミングの観点から見ると、文章は面倒だ.
基本的に、文章は何を実行しているのか.
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を入力しますか?
ただし、この結果を式として使用することはできません.JavaScriptコードの値がある場所に入れることはできません.
この結果はおかしい.
私たちは文章が何も返さないと予想しているからだ.
返された値を使用できない場合、文は値を返す意味がありません.これがJavaScriptです
関数宣言、関数式、名前付き関数式
関数宣言は文です.
しかし、この関数は名前が付けられています.
javascriptで関数の値を宣言するたびに、javascriptは値として処理しようとします.この関数を値として使用できない場合は、エラーが発生します.
逆に、スクリプト、モジュール、ブロック文(JavaScriptに値を入力しない場所)のグローバルフェーズ宣言関数は、結果として関数宣言になります.
後ろにセミコロンを付けるだけです.
2+2自体が式です.
しかし、行自体が式文です.
セミコロンをつけると、複数行の文を1行に置くことができます.
IIFEの関数式を今すぐ呼び出す
匿名関数は式として使用できます.
javascriptの値の場所でカッコを使用できる場合は、匿名関数を値の場所に渡すことができます.
次のコードは有効です.
この関数を直接呼び出すことができるという意味です.
注:文字自体が価値を意味します.
サイドノート:次のコードは有効なJavaScriptです.
例
次の例は、ラベルの作成が変数の作成ではないことを示しています.
次のように記述できます.
そして
私たちがよく知っているオブジェクト文字とは違います
console.logは文をパラメータとして受け入れない関数
ただし、オブジェクトテキストはパラメータとして使用できます.
文章には何も返却する規定はない.
値段に使えないから.
したがって、JavaScriptはerrorをエクスポートするのではなく、+演算子の被演算子を数値または文字列に置き換えます.
変更できない値の場合はエラーが発生します.
ブロック文が何を返しても、デフォルトでは
Javascriptでは、Expressions、Statement、Expressionsについては、これらを理解するだけです.
🔍 ブログ
JavaScript開発者として知りたい33の概念#7式と文(翻訳)
それが表現文がある理由です.
しかし逆に、文字は式のように動くことはできません.
式(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式と文(翻訳)
Reference
この問題について(式と文), 我々は、より多くの情報をここで見つけました https://velog.io/@fromzoo/표현식Expression과-문장Statementテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol