<分区>
查看 cssnano 源代码,我遇到了这一行
var proc = (0, _postcss2.default)();
根据我的测试,它似乎做同样的事情
var proc = _postcss2.default();
为什么 cssnano 使用第一种语法分配 proc
?
<分区>
查看 cssnano 源代码,我遇到了这一行
var proc = (0, _postcss2.default)();
根据我的测试,它似乎做同样的事情
var proc = _postcss2.default();
为什么 cssnano 使用第一种语法分配 proc
?
最佳答案
有一个细微的区别,根据两次不同的调用,this
的值在default
中是不同的。考虑以下代码:
var _postcss2 = {
default: function() {
return this;
}
};
var proc = (0, _postcss2.default)();
console.log(proc); // proc === window (or undefined in strict mode)
var proc = _postcss2.default();
console.log(proc); // proc === _postcss2
_postcss2.default()
调用 default
作为 _postcss2
对象的方法,并相应地设置 this
,但是 (0, _postcss2.default)();
不会,并且 this
在非严格模式下将是 window
,并且 undefined
在严格模式下。
方式the comma operator有效,是执行所有表达式,但只返回最终表达式,因此 0,
是一个简短的无意义表达式,使用逗号运算符获取函数引用本身,而不将其设置为变量优先。
如果这在这种特殊情况下有所不同,我不能不看代码本身就说。
corresponding line from the source code对于此代码,let proc = postcss();
,postcss
是 ES6 导入。此特定代码由 ES6 转译器生成,可能是 Babel。
关于javascript - 方法调用中使用逗号表达式是什么意思,比如 `var proc = (0, _postcss2.default)();`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37223306/