我知道像Lisp这样的函数式编程语言没有语句。在那里,一切都是表达式。JavaScript是一种函数式编程语言。所以我得出结论,每个JavaScript语句都是一个表达式。当我在玩Chrome的控制台时,这个想法涌入了我的脑海。在那里输入的每个语句都会被评估,并且如果表达式没有返回某个值,则控制台返回undefined。
我认为不行,因为您不能在需要表达式的地方使用任何语句:
// SyntaxError: Unexpected token var
var a = var b;
// SyntaxError: Unexpected token if
var c = if (true) {};
undefined
是由于其使用eval()
(或本地/内部等效)来评估任何代码引起的。var a = eval('var b;');
console.log(a); // undefined
throw
、return
、break
、continue
、switch
、case
、goto
、while
、for
... 控制语句是语句,而不是表达式。(如果你想让所有东西都成为表达式,CoffeeScript 可以做到相当接近。) - Keen