2016-02-22 2 views
0

В babeljs v6.5.1,Ноль в качестве первого аргумента в IIFE

class Foo {} 

компилирует

"use strict"; 

var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); 

var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); 

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 

var Foo = function Foo() { 
    (0, _classCallCheck3.default)(this, Foo); 
}; 

Что точка 0 в (0, _classCallCheck3.default)(this, Foo);?

В онлайн-babeljs repl, который, вероятно, имеет другую версию babeljs, эта линия просто _classCallCheck(this, Foo);, и они, похоже, делают то же самое. В чем разница между этими двумя утверждениями?

+0

Является ли «аргумент» правильным термином для использования в названии? У меня такое чувство, что это не так, но я не знаю, каков будет правильный термин. – user886596

ответ

2

0 игнорируется. Это только позволяет оператору запятой оценить _classCallCheck3.default и получить функцию без this, являющейся _classCallCheck3.