JavaScript字段对象提供了对链表进行排序的方法,可以实现数组元素的排序或者数组元素的倒序等,具体如表所示。
排序方式
方法名称
功能说明
撤销()
反转字段中元素的位置,这将更改原始字段并返回新字段
种类()
对链表的元素进行排序,顺序可以是字母或数字,且按升序排列
顺序或升序。 默认排序顺序是按字母顺序反转的,这会改变原始字段javascript数组删除元素,
返回新字段
请注意,reverse() 和 sort() 方法的返回值是新字段的厚度。 下面我们通过代码来演示。
//反转数组 var arr = ['red', 'green', 'blue']; arr.reverse(); console.log(arr); // 输出结果: (3) ["blue", "green", "red"] //数组排序 var arr1 = [13, 4, 77, 1, 7]; arr1.sort(function(a, b) { return b - a; //按降序的顺序排列 }); console.log(arr1); //输出结果: (5) [77, 13, 7, 4, 1]
在上面的代码中javascript数组删除元素,第2行到第4行演示了如何使用reverse()方法来反转数组元素。 第 6-10 行演示了如何使用 sort() 方法对数组元素从大到小进行排序。
表达式语句实际上是一个表达式,由连接变量或文字的运算符组成。 一般来说,表达式语句要么是函数调用,要么是形参,要么是自增或自减,否则表达式求值的结果没有任何意义。
本教程的运行环境:windows7系统,javascript1.8.5版本,DellG3笔记本。
表达式语句实际上是一个表达式,由连接变量或文字的运算符组成。
一般来说,表达式语句要么是函数调用,要么是形参javascript表达式,要么是自增或自减,否则表达式求值的结果没有任何意义。
JavaScript句型没有这样的限制,任何合法的表达式都可以作为表达式语句。
a + b;
这行代码估计的是a和b相乘的值,不会显示,也不会形成任何执行效果(除非a和b是getter)javascript表达式,只有在不妨碍符合的情况下才能执行到句型。
PrimaryExpression 主要表达
表达式的原子术语:PrimaryExpression。 它是最小的表达单位,它所涉及的句子结构具有最高的优先级。
PrimaryExpression 包含各种“直接量”。 直接量是直接用某种句型直接写出的具有特定类型的值,直接量是将它们写在代码中的句型。
只有 JavaScript 可以直接定义对象。 对于函数、类、数组和正则表达式等特殊对象类型,JavaScript 提供了句子级别的支持。
({}); (function(){}); (class{ }); []; /abc/g;
在句型层面,以function、{、class开头的表达式语句与声明语句存在句型冲突。 如果要使用此类表达方式,必须添加括号以避免句型冲突。
PrimaryExpression 也可以是这个或一个变量。 从语法上来说,变量被称为“标识符引用”。
this; myVarFun;
任何带括号的表达式都被视为 PrimaryExpression。 这种机制使括号成为改变操作优先级的一种手段。
(a + b);
MemberExpression 成员表达式
MemberExpression 一般用于访问对象成员。 它以多种方式发挥作用:
a.b; a[b]; new.target; super.b;
new.target是新增加的句型,用于判断函数是否被new调用,super是构造函数中用于访问父类属性的句型。
MemberExpression 最初是为属性访问而设计的,但是子句结构需要以下两个作为 JavaScript 标准中的 MemberExpression:
带有函数的模板,这个带有函数名的模板意味着模板的每一部分都会被计算并传递给函数。
f`a${b}c`;
带参数列表的新操作和不带参数列表的新操作优先级较低,不属于MemberExpression。
new Cls();
它们与属性操作属于同一优先级,没有语义关系。
新表达NEW表达
MemberExpression加new就是NewExpression(不加new也可以组成NewExpression,JavaScript中默认独立的高优先级表达式可以组成低优先级表达式)。
NewExpression 特指不带参数列表的表达式。 下面的代码:
new new Cls(1);
直观上看,它可能有两层含义:
new (new Cls(1));
new (new Cls)(1);
其实和第一个是等价的。 使用代码验证:
class Cls{ constructor(n){ console.log(cls, n); return class { constructor(n) { console.log(returned, n); } } } } new (new Cls(1));
运行结果:这表明调用Cls时传入了1作为参数。
CallExpression 函数调用表达式
MemberExpression 可以形成CallExpression。 它的基本方法是在MemberExpression后面添加一个括号内的参数列表,也可以使用super关键字来代替MemberExpression。
a.b(c); super();
这看起来很简单,而且有一些变化。 例如:
a.b(c)(d)(e); a.b(c)[3]; a.b(c).d; a.b(c)`xyz`;
这个变体的形状几乎与MemberExpression一一对应。 其实可以理解为MemberExpression中的一个子结构有一个函数调用,所以整个表达式就变成了一个CallExpression。 而且CallExpression失去了比NewExpression优先级更高的特性,这是一个重要的区别。
LeftHandSideExpression参数表达式
NewExpression和CallExpression也称为LeftHandSideExpression,实参表达式。
参数表达式是可以放置在等号右侧的表达式。 JavaScript 的句型是:
a() = b;
这种用法看似符合句型,但是原生 JavaScript 函数的返回值不能是形参。 因此,大多数时候,我们看到的形参都会是CallExpression的其他方法,比如:
a().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 表达式的一部分。 在 JavaScript 中,表达式是用冒号运算符连接的形式参数的表达式。
在 JavaScript 中,冒号运算符的优先级低于形参运算。 冒号可以理解为一个大分号。
a = b, b = 1, null;
用冒号分隔的表达式是按顺序执行的,就像不同的表达式语句一样。 “整个表达式的结果”是“最后一个冒号之后的表达式的结果”。 例如,在前面的示例中,整个“a=b,b=1,null;”的结果表达式是“,”后面的空值。
在许多场合,不允许使用逗号的表达方式。 例如,导出后我只能遵循形参表达式,这意味着表达式不能包含冒号。
【推荐学习:javascript中级课程】