JS表达式和语句的区别

图片描述

这里说道如果方法调用是语句的话代码的结果也就是字符串形式是不可能被写出来的。JS的语句不是也存在返回值的嘛?。。对JS中表达式和语句的区别一直有些晕。。JS里的表达式和语句到底应该怎么区分。二者到底有什么不同的用处呢?哪个大神能给我个完全的解答或者链接帮我彻底解除这个疑惑呢?先谢谢了。。

阅读 7.5k
评论 2015-12-05 提问
    3 个回答
    zonxin
    • 12k

    计算机语言发展到 C 就已经不区分函数和子过程了。

    在 javascript 中所有表达式都有返回值(如果没有返回值就是undefined),这个返回值就可以继续作为表达式的一部分。大多数语言表达式的定义为(忽略优先级):

    1. 字面量(例如1,2,3,“abc”);

    2. 运算符 表达式(一元,比如!true);

    3. 表达式 运算符 表达式(二元,比如1+2);

    4. 表达式1 ? 表达式2 : 表达式3(三元,a>b?a:b);

    5. 左括号 表达式 右括号(括号 (1+2));

    6. 表达式(参数列表)(函数调用)等。

    可见这是一种递归的定义。

    上面这段话“语句”的意思是指不是表达式的语句。在 javascript 里面满足这个条件的就函数声明、变量声明(var a=10是声明和赋值)、for语句、if语句、while语句、switch语句、return、try catch。
    但是 javascript 还有一种函数表达式,它的形式跟函数声明一模一样。如果写 function fn() { return 0;} 是函数声明而写var a = function fn(){ return 0;} 等号后面的就是函数表达式。

    楼主还是不要纠结什么是语句什么是表达式了,因为大多数时候我们说“语句”是指这门语言中的“一句话”。而表达式本身就可以作为“一句话”(表达式加一个分号就是“语句”),这段话的是说函数调用(方法调用)是表达式而已。

    评论 赞赏

      最简单的区别:表达式可以嵌套在别的表达式中,但语句不行。语句只能独立出现。

      另外,语句没有返回值。

      评论 赞赏
        dabinz
        • 317

        表达式计算出一个值,但语句用来执行以使某件事发生。
        《JavaScript权威指南》(第6版)

        该答案已被忽略,原因:

        评论 赞赏
          撰写回答

          登录后参与交流、获取后续更新提醒