js中表达式的定义,js表达式和语句的区别

  js中表达式的定义,js表达式和语句的区别

  本教程运行环境:windows7系统,javascript1.8.5版本1.8.5,戴尔G3电脑。

  表达式其实就是一个表达式,由连接变量或直接量的运算符组成。

  一般来说,表达式语句要么是函数调用,要么是赋值,要么是自增或自减,否则表达式计算的结果是没有意义的。

  JavaScript语法中没有这样的限制,任何合法的表达式都可以作为表达式语句使用。

  a b;这行代码计算A和B的附加值,但不会显示出来,也不会产生任何执行效果(除非A和B是getter),但可以在不妨碍符合语法的情况下执行。

  PrimaryExpression 主要表达式

  表达的原子术语:初级表达。它是最小的表达单位,它所涉及的语法结构也是最高优先级。

  Primary Expression包含了各种各样的“直接量”,它们是以某种语法直接编写的具有特定类型的值,直接量是在代码中编写它们的语法。

  JavaScript可以直接以量化的形式定义对象,JavaScript为函数、类、数组、正则表达式等特殊对象类型提供语法支持。

  ({});

  (function(){ });

  (类{ });

  [];

  /ABC/g;在语法级别,以function、{和class开头的表达式语句与声明语句有语法冲突。如果要使用这样的表达式,必须添加括号以避免语法冲突。

  主表达式也可以是this或变量,语法上称为“标识符引用”。

  这个;

  myVarFun任何带括号的表达式都被认为是主表达式,这种机制使括号成为改变运算优先级的一种手段。

  (a b);MemberExpression 成员表达式

  成员表达式通常用于访问对象成员。它有几种形式:

  a.b

  a[ b ];

  new.target

  super.bNew.target是新增加的语法,用来判断函数是否被New调用,super是用来访问构造函数中父类的属性的语法。

  成员表达式最初是为属性访问而设计的,但从语法结构的需要来看,JavaScript标准中使用了以下两种类型作为成员表达式:

  带函数的模板,这个带函数名的模板是指计算模板的所有部分,然后传递给一个函数。

  f`a $ { b } c带参数表的New运算,不带参数表的new运算优先级较低,不属于成员表达式。

  新Cls();它们与属性操作具有相同的优先级,但没有语义关系。

  NewExpression NEW 表达式

  成员表达式加new就是new表达式(New表达式可以不用New就可以形成,JavaScript中默认所有独立的高优先级表达式都可以形成低优先级表达式)。

  New表达式引用了没有参数列表的表达式。代码如下:

  新新Cls(1);直视,可能有两层意思:

  new(新Cls(1));new(新Cls)(1);其实相当于第一种。使用代码验证:

  Cls类{

  构造者(n){

  console.log(cls ,n);

  返回类别{

  构造者(n) {

  console.log(returned ,n);

  }

  }

  }

  }

  new(新Cls(1));Run:这说明在调用Cls时1是作为参数传入的。

  CallExpression 函数调用表达式

  成员表达式也可以组成一个调用表达式。它的基本形式是成员表达式后跟一列括号中的参数,也可以用super关键字代替。

  a . b(c);

  super();这看起来很简单,但它有一些变化。例如:

  a . b(c)(d)(e);

  a . b(c)[3];

  a . b . c。d;

  a . b(c)` XYZ ;这些变体的形式几乎与成员表达式一一对应。其实可以理解为,如果成员表达式中的一个子结构有函数调用,那么整个表达式就变成了调用表达式。然而,调用表达式失去了它相对于新表达式的优先权,这是一个主要的区别。

  LeftHandSideExpression 左值表达式

  New表达式和Call表达式统称为LeftHandSideExpression,左值表达式。

  左值表达式是可以放在等号左边的表达式。JavaScript语法是:

  a()=b;这种用法其实是符合语法的,但是原生JavaScript函数返回的值不能赋值。所以,很多时候,我们看到的赋值会是其他形式的调用表达式,比如:

  答()。c=b;根据JavaScript运行时的设计,不排除有些主机会提供返回引用类型的函数。此时,赋值是有效的。

  左值表达式最经典的用法是形成赋值表达式,但实际上,如果你翻阅一下JavaScript标准,你会发现它出现在各种情况下,只要你需要“可以修改的变量”的地方,你都能看到它。

  AssignmentExpression 赋值表达式

  赋值表达式还有许多形式的赋值表达式,其中最基本的当然是等号赋值:

  a=b等号可以嵌套:

  A=b=c=d连续赋值,这是一个正确的组合。它相当于以下内容:

  A=(b=(c=d))先把d的结果赋给C,然后把整个表达式的结果赋给B,再赋给a。

  赋值表达式也可以与一些运算符结合使用,例如:

  a=b;相当于:

  a=a b;可以这种方式使用的运算符如下:

  *=,/=,%=,=,-=,=,=,=,=,=,=,* *=在赋值表达式等号的左右两边可以使用不同的表达式类型。

  Expression 表达式

  赋值表达式可以构成表达式Expression的一部分。在JavaScript中,表达式是由逗号运算符连接的赋值表达式。

  在JavaScript中,逗号操作符的优先级低于赋值操作。逗号可以理解为小分号。

  a=b,b=1,null逗号分隔的表达式按顺序执行,就像不同的表达式语句一样。整个表达式的结果是最后一个逗号后的表达式的结果。例如,在前面的示例中,整个“a=b,b=1,null”“,”后表达式的结果为空。

  在许多情况下,不允许使用带逗号的表达式。比如我导出后只能跟赋值表达式,也就是说表达式不能包含逗号。

  【推荐学习:javascript高级教程】以上是javascript中有哪些表达式的详细介绍。更多请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: