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
の2つの異なる呼び出しに基づいて異なるという点で、わずかな違いがあります。以下のコードを検討:
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()
は_postcss2
オブジェクトのメソッドとしてdefault
を呼び出し、それに応じてthis
を設定するが、(0, _postcss2.default)();
ない、とthis
非厳密モードでwindow
なり、 strictモードではundefined
です。
the comma operatorの方法では、すべての式が実行されますが、最後の式だけが返されるため、0,
は、カンマ演算子を使用して関数参照自体を変数に設定せずに取得する短い無意味な式です最初。
このようなケースで違いがある場合は、コード自体を見ずには言えません。
このコードのcorresponding line from the source codeは、let proc = postcss();
であり、postcss
はES6インポートです。この特定のコードは、おそらくBabelというES6トランスパイラーによって生成されています。
どちらの行も同じことをします。 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Comma_Operatorを参照してください。なぜcssnanoが最初のやり方をしたのか、私は言うことができませんでした。 – nnnnnn
@nnnnnnまあ、私は答えを書くでしょう。 –
@ AlexanderO'Mara - OK、それは関数内の 'this 'の値を変更することになります - それはあなたの意味ですか?私はあなたの答えを待っていると思います... – nnnnnn