为什么谷歌主页使用(0,obj.func)(args)语法? [英] Why does google main page use (0, obj.func)(args) syntax?

查看:207
本文介绍了为什么谷歌主页使用(0,obj.func)(args)语法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有时我盯着google.com主页提供的js,发现他们倾向于使用(0,obj.func)(args)语法。以下是该剧本的摘录:

Sometimes I stared at js provided with google.com main page and found that they tended to use (0, obj.func)(args) syntax. Here are excerpts from the script:

 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) {}
 })(_);  

为什么要提前0?

推荐答案

这会产生间接通话

这确保了被调用函数中的上下文是全局上下文。这可能在内部范围内有用。

This ensures the context, in the called function, is the global one. This might be useful in an internal scope.

示例:

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

这篇关于为什么谷歌主页使用(0,obj.func)(args)语法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆