- "表达式"(expression)是一个单纯的运算过程,总是有返回值;
- "语句"(statement)是执行某种操作,没有返回值。
1 function foo(){}; // 声明,因为它是程序的一部分 2 var bar = function foo(){}; // 表达式,因为它是赋值表达式的一部分 3 4 new function bar(){}; // 表达式,因为它是New表达式的一部分 5 6 (function(){ 7 function bar(){}; // 声明,因为它是函数体的一部分 8 })();
表达式的一部分,也是表达式。 而如果
function foo(){}
被包含在一个函数体内,或者位于程序中,则将它作为一个语句
还有一种不那么显而易见的表达式,就是被包含在一对圆括号中——(function foo(){})
。 将这种形式看成表达式同样是因为上下文的关系: (和)构成一个分组操作符,而 分组操作符只能包含表达式:1 (function foo(){}); // 函数表达式:注意它被包含在分组操作符中 2 (var x = 5); // error! 分组操作符只能包含表达式,不能包含语句(这里的var就是语句)
alert(eval("{}")); // undefined 这里 {} 作为一个语句 没有返回值
alert(eval("({})")); "[object Object]" 这里加上() 而() 里面包含的是表达式有返回值
var dataObj=eval("("+data+")");//转换为json对象
在表达式中,只能存在表达式,不能存在语句。(var a = 4) + 4; //错误 var a = 4; 是一条语句
if (var a = 0) {} //错误 var a = 0; 是一条语句
转载自:http://justjavac.com/codepuzzle/2012/10/28/codepuzzle-expression-and-statement.html