首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >奇怪的javascript代码

奇怪的javascript代码
EN

Stack Overflow用户
提问于 2015-01-25 13:07:53
回答 2查看 457关注 0票数 6

我找到了这个代码片段:

代码语言:javascript
复制
;       
100% function($) {                                        // WTF?
    var _true_ = true;                                    // WTF?
    var _false_ = false;                                  // WTF?
    var go = function(location, date) {
        location || (location = {});  
        var result = _false_;
        if (date && date.day) {       
            result = geoService.go(location, date);
        }
        return !!result;              
    }
    var process = function(func) {
        var args = [].prototype.slice.call(arguments, 1); 
        return function() {                               
            return func.apply(this, args);
        }
    }
    // ...
}(jQuery, undefined);                                     

在这里:http://www.dofactory.com/products/javascript-jquery-design-pattern-framework (对不起,页面上没有找到id-s )

我不明白这些部分在做什么:

  1. 第二行的"100%“
  2. 3-4行中的var _true_ = true;var _false_ = false;分配

我很好奇这些东西的目的是什么。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-25 13:13:55

第二行的"100%“

它是100数,后面跟着一个模算子。它不用于任何事情(因为没有捕获结果),只是强制将右侧作为函数表达式来处理,而不是函数声明。

这是我从未见过的一种非常不寻常和不直观的方法。

更常见的做法是将函数表达式包装为parens或在其前面加上not运算符。

变量true = true;var false = false;赋值在3-4行中。

作者似乎试图通过将truefalse复制到名称中包含非alpha数字字符的变量中,而不是始终使用文字来提请注意它们的使用。再说一次,这是非常奇怪的,这不是我以前见过的。

票数 9
EN

Stack Overflow用户

发布于 2015-01-25 13:37:29

看起来,它是一组错误使用的“最佳实践”,它不会导致异常,但绝对是奇怪和模糊的。看第二行也是最后一行。最佳做法正好相反,反之亦然:

代码语言:javascript
复制
(function ($, undefined){
    // do the stuff 
})(jQuery);

这里的未定义将是真正的未定义的,因为当函数调用时没有第二个参数。但是到底是什么原因把“未定义的”参数传递给函数而不使用它呢?看起来像个恶作剧。

同样的事情发生在5行上:它看起来(实际上是)作为“默认参数”赋值,但却以奇怪的方式完成(传统上,更明显的是它用作location = location || {};)。我相信,只有这样写它的理由才可能是混淆、玩笑或误解。

100%也是如此。您可以使用任何运算符来指示函数表达式。最常见的方法是使用括号。但你也经常会遇到:

代码语言:javascript
复制
!function(){

}();

或者:

代码语言:javascript
复制
+function(){

}();

但你也可以写

代码语言:javascript
复制
42 * function(){

}();

这一切都是一样的,只有括号是最明显和常见的。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28136748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档