语句与表达式

  • "表达式"(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
posted @ 2013-11-13 11:19  楚玉  阅读(302)  评论(0编辑  收藏  举报