operator operador javascript

javascript - operador - ¿Por qué la página principal de Google usa la sintaxis(0, obj.func)(args)?



spread operator javascript (1)

Esto hace una llamada indirecta .

Esto asegura que el contexto, en la función llamada, sea el global. Esto podría ser útil en un ámbito interno.

Ejemplo:

var a = { b: function(){ console.log(this); }, c1: function(){ this.b(); }, c2: function(){ (0, this.b)(); } } a.c1(); // logs a a.c2(); // logs window

A veces miraba js con la página principal de google.com y encontraba que solían usar la sintaxis (0, obj.func)(args) . Aquí hay extractos del guión:

var _ = _ || {}; (function (_) { var window = this; try { _.mb = function (a) { return (0, window.decodeURIComponent)(a.replace(//+/g, " ")) }; _.zg = function (a, b) { for (var c = a.length ? a.split("&") : [], d = 0; d < c.length; d++) { var e = c[d]; if ((0, _.Ag)(e) == b) return (c = /=(.*)$/.exec(e)) ? (0, _.mb)(c[1]) : null } return null }; _.Ag = function (a) { return (a = /^(.+?)(?:=|$)/.exec(a)) ? (0, _.mb)(a[1]) : null }; var Cg = function (a, b) { var c = a.indexOf("?"); return 0 > c ? null : (0, _.zg)(a.substring(c + 1), b) }; // Note var Cg called with no 0 var oca = function (a) { this.A = Cg(a, "mods"); this.B = Cg(a, "ver") }; } catch (e) {} })(_);

¿Por qué anteponer 0?