JavaScript syntax (0, fn)(args)
只是检查Google的JavaScript代码,我发现了以下语法:
1 2 | var myVar = function...; (0, myVar)(args); |
您知道这种语法的含义吗?
我找不到之间的区别
和
举一个确切的例子,我们有
1 2 3 | _.x3 = function (a, b) { return new _.q3(20 * b.x + a.B.B.x, 20 * b.y + a.B.B.y) }; |
然后
1 | this.ta = new _.s3((0, _.x3)(this.fa, this.B.B), 0); |
我有同样的问题,然后找到答案,如下所示:
真的是为了
1 | (0, foo.fn)(); |
请记住,在JavaScript中,当调用
1 2 | var g = foo.fn; g(); |
然后在上面调用
那么,您是否需要像上面那样定义
1 | (foo.fn)(); |
答案是不。 JavaScript将其与
但是有一种解决方法,它就是使用逗号运算符,Mozilla表示为
The comma operator evaluates each of its operands (from left to right) and returns the value of the last operand
所以用
1 | (0, foo.fn)(); |
因此,以这种方式编写的代码是"剪切绑定"。
例:
1 2 3 4 5 6 7 8 9 10 11 12 | var foo = { fullName:"Peter", sayName: function() { console.log("My name is", this.fullName); } }; window.fullName ="Shiny"; foo.sayName(); // My name is Peter (foo.sayName)(); // My name is Peter (0, foo.sayName)(); // My name is Shiny |
此语法使用逗号运算符
评论后编辑:
之所以使用这种编码风格,是因为他们可以快速执行代码或一行执行代码。这是一个例子:
1 2 3 4 5 6 7 8 9 | var a = 0, b = 1, c; c = ( a++, b++, a + 2 ); // a is added, b is added, and a is added then returned a; // 1 b; // 2 c; // 3 |
逗号运算符返回最后一个操作数的值,因此
有时在第一个操作数实际执行某项操作时使用逗号运算符,例如在循环中初始化两个变量:
1 | for (i = 0, j = 42; i < 10; i++, j--) ... |