ホームページ ウェブフロントエンド jsチュートリアル JavaScript: 式とステートメントの違い [翻訳]_javascript スキル

JavaScript: 式とステートメントの違い [翻訳]_javascript スキル

May 16, 2016 pm 05:49 PM
表現 声明

1. ステートメントと式

JavaScript の式とステートメントには違いがあり、式は値を生成するため、関数呼び出しパラメーターなど、値が必要な場所に配置できます。以下のコード行は式です:

myvar3 xmyfunc("a", "b") ステートメントは、ループ ステートメントと典型的なステートメントとして理解できます。 JavaScript でステートメントが必要な場合は常に、そのようなステートメントを式ステートメントと呼びます。ただし、その逆は当てはまりません。式が必要な場所で式を使用することはできません。たとえば、if ステートメントは関数のパラメータとして使用できません。

2. 他の構文を理解した後、次の 2 つの構文を見てください。ステートメントと式の関係をより深く理解するのに役立ちます。

2.1 If ステートメントと条件演算子
次に、if ステートメントの例を示します。



コードをコピーします コードは次のとおりです:
var x;
if (y >= 0) {
x = y;
} else {
x = -y;
}


上記の文は条件演算子と呼ばれます。

var x = (y >= 0 ? y : -y);

等号 = とセミコロンの間のコードは条件式です。両側の括弧 必須ではありませんが、括弧を使用すると条件式が読みやすくなると思います。

2.2 セミコロンとカンマ演算子
JavaScript では、セミコロンを使用して 2 つのステートメントを接続します。

foo (); bar() 2 つの式を接続するには、一般的ではないカンマ演算子が使用されます:

foo(), bar() カンマ演算子は の前後の 2 つの式を評価し、次の計算結果を返します。例:


コードをコピーします。 コードは次のとおりです:
> "a", "b"

> var x = ("a", "b"); >
> console.log(("a", "b"));




のような式

3.1 オブジェクト リテラルとステートメント ブロック
次に示すのは、オブジェクト値の式を生成できる式であるオブジェクト リテラルです。 >


コードをコピー


コードは次のとおりです:


{ • ラベル: 任意のステートメントの前にラベルを配置できます。
• ステートメント: 式ステートメント bar(3, 5)。 JavaScript が実際に独立したコード ブロックを持つことができることにショックを受けました (一般的なコード ブロックはループまたは if ステートメントに基づいています)。次のコードは、このコード ブロックの機能を示しています。ラベルを設定して、このコード ブロックから飛び出すことができます。 >



コードをコピー


コードは次のとおりです:


function test(printTwo) {
印刷: {
console.log("One");
if (!printTwo) 印刷を中断します; console.log("Three") ); } > テスト (偽) 1 3 > テスト (true)
1
2
3


3.2 関数式と関数宣言
次のコードは関数式です:

function () { } この関数式に名前を付けて変換することもできます。 ) 関数式:

function foo() { }この関数の関数名 (foo) は関数内にのみ存在します。たとえば、これを使用して再帰操作を行うことができます:





コードをコピーします

コードは次のとおりです。


> var fac = function me(x) { return x <= 1 ? 1 : x * me(x-1) }
> fac(10)
3628800
> console.log(me)
参照エラー: me が定義されていません


表面的には、名前付き関数式は関数宣言と変わりません。しかし、その効果は異なります。関数式は値 (関数) を生成します。アクションを実行します。関数を代入します。また、すぐに呼び出すことができるのは関数式のみであり、関数宣言は実行できません。
3.1 と 3.2 からわかるように、一部の式には式とステートメントの間に明らかな違いはありません。これは、同じコードが式コンテキストに現れる場合とステートメント コンテキストに現れる場合に異なる効果があることを意味します。ただし、それが式ステートメントの場合は重複します。つまり、この曖昧さを解決するために、JavaScript 構文では式ステートメントを中括弧で囲むことや、キーワード「関数」が


コードをコピーします コードは次のとおりです: ExpressionStatement:
[lookahead ∉ {"{", "function" }] Expression ;


では、これらのフラグで始まる式ステートメントを記述したい場合はどうすればよいでしょうか。これは内部的には演算の結果を変更しません。式が式のコンテキストで解析されることを確認するだけです。最初の例を見てみましょう。eval はステートメントのコンテキストに従ってパラメータを解析します。eval がオブジェクトを返したい場合は、オブジェクト リテラルを括弧で囲む必要があります。 .


コードをコピーします コードは次のとおりです。 > 123 }")
123
> eval("({ foo: 123 })")
{ foo: 123 }


2 番目の例: 次の例はすぐに実行される関数式


コードをコピーします コードは次のとおりです。 > (function () { return "abc" }())
'abc'


括弧を省略すると、構文エラーが発生します (関数宣言を匿名にすることはできません):


コードをコピー コードは次のとおりです。 > function () { return "abc" }( )
SyntaxError: 関数ステートメントには名前が必要です


関数名を追加すると、構文エラーも発生します (関数ステートメントを理解および実行できません):


コードをコピーします コードは次のとおりです。 > { return "abc" }() SyntaxError: 構文エラー


式コンテキストで式を解析するもう 1 つの方法は、 or! などの単項演算子を使用することです。ただし、括弧を使用する場合とは異なり、これらの演算子は結果を変更します。式の結果を気にしない場合は、次を使用できます。



コードをコピー
コードは次のとおりです。 > function () { console.log("hello") }() hello
NaNNaN


は、関数実行後の戻り値は未定義です。

翻訳者注: 訳が分かりにくいと思ったので、レベルの低い図を描きました。



原文。 (英語):
http://www.2ality.com/2012/09/expressions-vs-statements.html
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHP8.0のmulti-catch文 PHP8.0のmulti-catch文 May 14, 2023 pm 01:51 PM

Web アプリケーションの開発に伴い、PHP 言語は Web 開発で広く使用されています。 PHP8.0 バージョンでは、新しい言語機能である multi-catch ステートメントが導入されました。マルチキャッチステートメントとは何ですか?以前の PHP バージョンでは、開発者は複数の例外タイプを処理するために複数の catch ステートメントを作成する必要がありました。たとえば、次のコード ブロックは 2 つの異なる例外の処理を示しています。

Python 式の構文エラーを解決するにはどうすればよいですか? Python 式の構文エラーを解決するにはどうすればよいですか? Jun 24, 2023 pm 05:04 PM

Python は高レベルのプログラミング言語であり、学習と使用が簡単です。 Python プログラムを作成する必要があると、必然的に構文エラーに遭遇することになります。式の構文エラーはよくあるエラーです。この記事では、Python で式の構文エラーを解決する方法について説明します。式の構文エラーは Python で最も一般的なエラーの 1 つであり、通常は構文の間違った使用法や必要なコンポーネントの欠落によって発生します。 Python では、式は通常、数値、文字列、変数、演算子で構成されます。ごくありふれた

MySQLにデータを挿入するステートメントを実装するにはどうすればよいですか? MySQLにデータを挿入するステートメントを実装するにはどうすればよいですか? Nov 08, 2023 am 11:48 AM

MySQLにデータを挿入するステートメントを実装するにはどうすればよいですか? MySQL データベースを使用する場合、データの挿入は非常に基本的で一般的な操作です。データを挿入することにより、新しいレコードをデータベース テーブルに追加して、業務運営をサポートできます。この記事では、MySQL で INSERT ステートメントを使用してデータ挿入操作を実装する方法を紹介し、具体的なコード例を示します。 MySQL の INSERT ステートメントは、データベース テーブルに新しいレコードを挿入するために使用されます。基本的な構文形式は次のとおりです。 INSERTINTOt

C および C++ では、式またはステートメントを区切るためにカンマが使用されます。 C および C++ では、式またはステートメントを区切るためにカンマが使用されます。 Sep 09, 2023 pm 05:33 PM

C または C++ では、カンマ「,」はさまざまな用途に使用されます。ここではそれらの使用方法を学びます。演算子としてのカンマ。カンマ演算子は、最初のオペランドを評価して結果を破棄し、次に 2 番目のオペランドを評価して値を返す二項演算子です。カンマ演算子は、C または C++ では優先順位が最も低くなります。例 #include<stdio.h>intmain(){ intx=(50,60); inty=(func1(),func2());} ここでは、x に 60 が代入されます。次のステートメントでは、 func1( が最初に実行されます

Python のフロー制御ステートメントの種類をマスターして、ゼロから学びましょう。 Python のフロー制御ステートメントの種類をマスターして、ゼロから学びましょう。 Jan 20, 2024 am 09:02 AM

Pythonをゼロから学ぶには、まずフロー制御文の種類を理解しましょう! Python は、データ分析、人工知能、ネットワーク開発、およびさまざまな科学計算分野で広く使用されているシンプルかつ強力なプログラミング言語です。初心者にとって、基本的なフロー制御文を習得することは、論理的な判断を実現し、プログラムの実行フローを制御するための基礎となるため、非常に重要です。 Python には、順次構造、条件構造、ループ構造という 3 つの主なタイプのフロー制御ステートメントがあります。以下では、これら 3 つのプロセス制御ステートメントを詳細に紹介し、対応するステートメントを示します。

Python のフロー制御ステートメントを理解するには、いくつかの状況をマスターする必要があります Python のフロー制御ステートメントを理解するには、いくつかの状況をマスターする必要があります Jan 20, 2024 am 08:06 AM

Python は広く使用されている高級プログラミング言語で、学習が簡単で効率的かつ柔軟で、開発者に深く愛されています。 Python では、フロー制御ステートメントはプログラム ロジックの実装の重要な部分です。この記事では、Python でよく使用されるフロー制御ステートメントを紹介し、理解を深めるためのコード例を示します。 Python では、一般的なフロー制御ステートメントには条件ステートメントとループ ステートメントが含まれます。条件付きステートメントは、真または偽の条件に基づいてさまざまなコード ブロックを実行し、実行ブランチを決定および選択するために使用されます。ループステートメントは繰り返しに使用されます

C# の try ステートメントの使用法 C# の try ステートメントの使用法 Feb 22, 2024 pm 12:45 PM

C# で try ステートメントを使用するには、特定のコード例が必要です。C# はオブジェクト指向プログラミング言語であり、try ステートメントは例外をキャプチャして処理するために使用される構造です。 try ステートメントを使用すると、発生する可能性のある例外を処理するコードを作成できるため、プログラムの安定性と信頼性が向上します。この記事では、C# での try ステートメントの使用法を紹介し、読者の理解を助けるためにいくつかの具体的なコード例を示します。 C# では、try ステートメントは try ブロック、catch ブロック、optionalfina で構成されます。

C言語の指数関数式入門 C言語の指数関数式入門 Feb 18, 2024 pm 01:11 PM

C 言語での指数関数式の書き方とコード例の紹介 指数関数とは? 指数関数は数学でよく使われる関数で、f(x)=a^x の形式で表現できます。 a は底、x は指数です。指数関数は主に、指数関数的な増加または指数関数的な減衰を説明するために使用されます。指数関数のコード例 C 言語では、数学ライブラリの pow() 関数を使用して指数関数を計算できます。

See all articles