3

Lisp のような関数型言語にはステートメントがないことを私は知っています。そこにはすべて表現があります。JavaScript は関数型言語です。したがって、すべての JavaScript ステートメントは式であるという結論に達しました。この考えは、Chrome のコンソールで遊んでいたときに頭に浮かびました。そこに入力されたすべてのステートメントが評価され、式が特定の値を返さない場合、コンソールは undefined を返します。

4

2 に答える 2

7

すべての JavaScript ステートメントは式であるという結論に達しました

いいえ、絶対に違います。EcmaScript 標準では、ステートメント (§12)式 (§11 ) が明確に区別されています。

それでも、式と間違えているのは式ステートメント (§12.4)で、式のみで構成されています (セミコロンで区切られています)。

于 2013-05-02T21:17:41.373 に答える
5

式が必要なステートメントだけを使用することはできないため、いいえと言います。

// SyntaxError: Unexpected token var
var a = var b;
// SyntaxError: Unexpected token if
var c = if (true) {};

undefinedChrome のコンソールに表示されるのは、コードを評価する (またはネイティブ/内部の同等のもの) の使用によるものeval()です。

var a = eval('var b;');
console.log(a); // undefined

はのundefined結果ではありませんが、評価されたコードがそれを提供したかどうかにかかわらず、それ自体にはまだ戻り値があるvar b;ためです。eval()

于 2013-05-02T21:17:41.707 に答える