这是一系列关于JavaScript中语法的问题.这也是社区Wiki,因此邀请每个人参与维护此列表.
Stack Overflow不允许搜索特定字符.因此,在搜索运算符和其他语法标记时,很难找到许多关于运算符和其他语法标记的问题.这也使得关闭重复更加困难.以下列表是为了解决此问题.
主要思想是在Stack Overflow上链接现有问题,因此我们更容易引用它们,而不是复制ECMAScript规范中的内容.
此外,这是PHP符号引用的公然副本.我们需要一个JS.
请帮忙.编辑并添加指向其他运算符/语法参考的链接,或者如果您无法在特定语法上找到好的问题/答案,请添加此问题的答案并将其链接
在Java 8中,当我一个接一个地链接方法时,使用流以流水线方式执行操作.
例:
List<Integer> nums = Arrays.asList(1,2,3,4,5,6);
nums.stream().map(x->{
x = x * x;
System.out.println("map1="+x);
return x;
}).map(x->{
x = x * 3;
System.out.println("map2="+x);
return x;
}).forEach(x-> System.out.println("forEach="+x));
Run Code Online (Sandbox Code Playgroud)
输出: -
map1=1
map2=3
forEach=3
map1=4
map2=12
forEach=12
map1=9
map2=27
forEach=27
map1=16
map2=48
forEach=48
map1=25
map2=75
forEach=75
map1=36
map2=108
forEach=108
Run Code Online (Sandbox Code Playgroud)
但是当我在javascript中尝试类似时.结果是不同的.在javascript中,第一个操作完成,然后执行第二个操作.例如: -
var nums = [1,2,3,4,5,6 ];
nums.map(x => {
x = (x * x);
console.log('map1='+x);
return x;})
.map(x => {
x = x * 3;
console.log('map2='+x);
return x;})
.forEach(x=> console.log('forEach='+x));
Run Code Online (Sandbox Code Playgroud)
输出: - …
许多语言都有一个运算符,允许您将一个操作的结果传递给另一个操作的调用(例如|bash中的|>操作符,F#中的操作符).
我对javascript中方法链接的常用习语的一个很大的好处是它从上到下,从左到右读取:
var fooOddSquares = [1, 2, 3, 4, 5]
.filter(x => x % 2)
.map(x => "foo" + x * x)
.reduce(((acc, str, i) => acc[i + 1] = str; return acc), {});
// => {1: "foo1", 2: "foo9", 3: "foo25"}
Run Code Online (Sandbox Code Playgroud)
与组成代码相比:
var something = func5(
func4(
func3(
func2(
func1(
somedata
)
)
)
)
);
Run Code Online (Sandbox Code Playgroud)
从右到左,从下到上阅读.我意识到这可以通过功能组合来清理,但这不一定是重点.只是为了清楚地了解我正在寻找的东西:
var something = func1(somedata)
|> func2
|> func3
|> func4
//etc...
Run Code Online (Sandbox Code Playgroud)
在javascript中对管道运算符进行谷歌搜索主要会显示有关按位OR运算的信息.随着一些挖,但是我能挖了这个文章描述运算符重载的卑劣破解版本,可以实现什么我谈论的东西.我还挖掘了这个描述所述运算符的要点,并说"它已被提议用于javascript".
看看ES 2016,我看到了一个求幂运算符和绑定运算符的提议.两者都很有用,但不是我想要的.所以根据要点的标题,有没有人真的为javascript提出这个?