JavaScript语法:什么是表达式语句?

2023-07-1507:15:25编程语言入门到精通Comments780 views字数 1230阅读模式

JavaScript语法:什么是表达式语句?

表达式语句实际上就是一个表达式,它是由运算符连接变量或者直接量构成。
一般表达式语句要么是函数调用,要么是赋值,要么是自增,自减,否则表达式的计算结果没有任何意义。但在语法上并没有限制。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/51551.html

PrimaryExpression 主要表达式

表达式的原子项:PrimaryExpress。它是表达式的最小单位,它涉及的语法结构也是优先级最高的。
PrimaryExpression包含各种“直接量”,直接量就是直接用某种语法写出来的具有特定类型的值。比如,数字123,字符串hello world。通俗地讲,直接量就是在代码中把它们写出来的语法。
在类型的部分,已经介绍过一些基本类型的直接量:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/51551.html

123;
null;
true;
false;

除此之外,JavaScript还能够直接量的形式定义对象,针对函数、类、数组、正则表达式等特殊对象类型:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/51551.html

({});
(function(){});
(class{ });
[];
/abc/g;

Primary Expression还可以是this或者变量,在语法上,把变量称作“标识符引用”。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/51551.html

this;
myVar;

任何表达式加上圆括号,都被认为是Primary Expression,这个机制使得圆括号成为改变运算优先顺序的手段。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/51551.html

(a + b)

MemberExpression 成员表达式

Member Expression通常是用于访问对象成员的。它有几种形式:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/51551.html

a.b;
a["b"];
new.target;
super.b;

new.target是个新加入的语法,用于判断函数是否是被new调用
super则是构造函数中,用于访问父类的属性的语法。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/51551.html

以下两种为了语法结构需要,在JavaScript中当作Member Expression:
这个是一个带函数的模板,表示把模板的各个部分算好后传递给一个函数。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/51551.html

f`a${b}c`;

带参数列表的new 运算,注意不带参数列表的new运算优先级更低,不属于Member Expression。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/51551.html

new Cls();

NewExpression NEW表达式

Member Expression加上new就是New Expression(当然,不加new也可以构成New Expression,JavaScript中默认独立的高优先级表达式都可以构成低优先级表达式)。
New Expression特指没有参数列表的表达式:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/51551.html

new new Cls(1);
// 直观看上去,可能有两个含义:
// new (new Cls(1));
// new (new Cls)(1);

实际上它等价于"new (new Cls(1));",1被当作调用Cls时的参数传入了。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/51551.html

class Cls{
    constructor(n){
        console.log("cls", n);
        return class {
            constructor(n) {
                console.log("returned", n);
            }
        }
    }
}
new (new Cls(1));
// cls 1
// returned undefined
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/51551.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/ymba/51551.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定