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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。