• js 表达式与语句


    引子:表达式和语句很基础,但是有时会犯错,比如:

    function(){}//报错
    (function(){})//不报错
    function f(x){ return x + 1 }()//报错
    function f(x){ return x + 1 }(1)//不报错,为什么返回 1

    能明白为什么?

    解释:

    第一行代码:因为JavaScript 将 function 关键字当作一个 函数声明语句 的开始,而函数声明语句 function 关键字后面应该是 函数名,这里后面跟圆括号,当然会报错。

    第二行代码:给它加上一对圆括号,解析器会把()里的当做表达式去解析,在这里就会当做匿名函数表达式解析,所以不会报错。

    第三行代码:在一条语句后面加上()会被当做分组操作符,分组操作符里必须要有表达式,所以这里报错;

    第四行代码:在一条函数声明语句后面加上(1),仅仅是相当于在声明语句之后又跟了一条毫无关系的表达式,等价于下面代码:

    function f(x){ return x + 1 }
    (1)//1

    所以返回了无关紧要的答案;

    看来基础还是要看看的,下面甩定义:

    表达式(expression):

    js 中的一个短语,js 解释器会将其计算出一个结果。程序中的常量是最简单的一类表达式。

    变量名也是一种简单的表达式,它的值就是赋值给变量的值。
    复杂表达式是由简单表达式组成的。

    比如,数据访问表达式是由一个表示数组的表达式、左方括号、一个整数表达式和右方括号构成。它们所组成的新的表达式的运算结果是该数组的特定位置的元素值。

    同样的,函数调用表达式由一个表示函数对象的表达式和0个或多个参数表达式构成。

    将简单表达式组合成复杂表达式最常用的方法就是使用运算符(opetator)。

    运算符按照特定的运算规则对操作数(通常是两个)进行运算,并计算出新值。

    乘法运算符“*”是比较简单的例子。表达式x*y是对两个变量表达式x和y进行运算并得出结果。有时我们更愿意说运算符返回了一个值而不是“计算”出了一个值。

    书上目录截图:

    image

    语句(statement):

    js 整句或命令。js 语句是以分号结束;表达式计算出一个值,但语句用来自行以使某件事发生。
    “使某件事发生”的一个方法是计算带有副作用的表达式。

    诸如赋值和函数调用这些有副作用的表达式,是可以作为单独的语句的,这种把表达式当做语句的用法也称作表达式语句(expression statement)。类似的语句还有声明语句(declaration statement),声明语句用来声明新变量或定义新函数。

    书上目录截图:

    image

    参考资料:

    JavaScript高级程序设计-第3版-中

    JavaScript权威指南-第6版-中

  • 相关阅读:
    HDU Ignatius and the Princess III (母函数)
    HDU 1014 Uniform Generator
    HDU 1013 Digital Roots
    HDU u Calculate e
    HDU 1005 Number Sequence 找规律
    Vijos 送给圣诞夜的极光(bfs)
    HDU Sum Problem (一道神坑的水题)
    Vijos CoVH之再破难关(搜索+hash)
    VIjos 晴天小猪历险记之Number (搜索+链表hash)
    Vijos 有根树的同构问题【字符串---最小表示法】
  • 原文地址:https://www.cnblogs.com/xianshenglu/p/8386918.html
Copyright © 2020-2023  润新知