JavaScriptstring串联行为,具有空值或未定义的值

正如你可能知道的,在JavaScript中'' + null = "null"和'' + undefined = "undefined" (在大多数浏览器中我可以testing:Firefox,Chrome和IE)。 我想知道这个古怪的起源(Brendan Eich的头脑里到底是什么?),如果在未来的ECMA版本中有任何改变的话。 如果用'sthg' + (var || '')来连接string和variables,并使用像Underscore或其他的第三方框架那样使用锤子来敲击jelly指甲,那真是令人沮丧。 编辑: 为了满足StackOverflow所要求的标准,并澄清我的问题,这是一个三重的问题: 什么是古怪背后的历史,使JS转换为null或undefined为String串联的string值? 在将来的ECMAScript版本中,是否有机会改变这种行为? 将String与潜在的null或undefined对象连接起来而不会陷入这个问题(在String中间获得"null"一些"undefined" ,最简单的方法是什么? 我认为最主要的标准是:简短,干净,有效。 没必要说'' + (obj ? obj : '')不是很漂亮…

如何在phpstorm中禁用版本控制?

我正在玩phpstorm,并以某种方式激活版本控制。 我不需要它。 现在我所有的标签都是不同的:灰色背景上的橙色文字。 文件视图中的所有文件都是橙色的。 如何禁用版本控制?

生产服务器上无法启动rails 4控制台

有一个奇怪的问题,需要帮助。 我试图在生产服务器上启动一个rails控制台,它的行为就像rails c命令不存在一样。 FWIW,我已经做了4年的rails开发人员,并且一直在大量的其​​他服务器上完成这个任务。 在这个服务器上,我可以放下,创build,迁移,播种数据库没有问题(使用RAILS_ENV =生产),而且应用程序正常工作没有任何问题。 build立: Ubuntu 14.04(racksapce第二代性能1服务器) 带有Passenger的Nginx(我通常使用Unicorn,但从来没有任何与Passenger部署的应用程序有问题) Ruby 2.1.5(使用rvm) Rails 4.1.7 Postgres的 Capistrano 3(使用rvm,迁移,资产预编译等扩展) 我试过了: cd进入app目录: cd /home/deployer/app_name/current 其中加载.rvmrc,并显示我在正确的gemset,运行捆绑只是踢。 rails c production # (which usually works no problem) bundle exec rails c production # (sometimes have to do this on older apps that do not have the newer capistrano 3 and rvm […]

JQuery Datatables:无法读取未定义的属性'aDataSort'

我创build了这个小提琴,并按照我的要求,它工作得很好: 小提琴 但是,当我在我的应用程序中使用相同的时候,我在浏览器控制台中得到一个错误,说不能读取未定义的属性'aDataSort' 在我的应用程序中,JavaScript读取如下所示:我已检查控制器输出…它工作正常,并在控制台上打印。 $(document).ready(function() { $.getJSON("three.htm", function(data) { // console.log("loadDataTable >> "+JSON.stringify(data)); }) .fail(function( jqxhr, textStatus, error ) { var err = textStatus + ', ' + error; alert(err); console.log( "Request Failed: " + err); }) .success(function(data){ loadDataTable(data); }); function loadDataTable(data){ $("#recentSubscribers").dataTable().fnDestroy(); var oTable = $('#recentSubscribers').dataTable({ "aaData" : JSON.parse(data.subscribers), "processing": true, "bPaginate": false, "bFilter": […]

无法在Visual Studio 2015中生成,因为找不到“Microsoft.Build.Tasks.v14.0.dll”

试图在Visual Studio 2015中构build时,以下文件丢失? 这个项目以前正在VS2013build成。 严重级代码说明项目文件行错误无法从程序集“C:\ Program Files(x86)\ MSBuild \ 14.0 \ bin \ Microsoft.Build.Tasks.v14.0.dll”中加载任务工厂“CodeTaskFactory”。 无法加载文件或程序集“file:/// C:\ Program Files(x86)\ MSBuild \ 14.0 \ bin \ Microsoft.Build.Tasks.v14.0.dll”或其某个依赖项。 该系统找不到指定的文件。

从命令行覆盖Ansible playbook的主机variables

这是我正在使用的剧本的一个片段( server.yml ): – name: Determine Remote User hosts: web gather_facts: false roles: – { role: remote-user, tags: [remote-user, always] } 我的主机文件有不同的服务器组,例如 [web] xxxx [droplets] xxxx 现在我想执行ansible-playbook -i hosts/<env> server.yml并从server.yml覆盖hosts: web来运行[droplets]这个剧本。 我可以直接重写一次,不直接编辑server.yml吗? 谢谢。

为什么原始函数和用户定义的types在从函数返回为“const”时的行为不同?

#include <iostream> using namespace std; template<typename T> void f(T&&) { cout << "f(T&&)" << endl; } template<typename T> void f(const T&&) { cout << "f(const T&&)" << endl; } struct A {}; const A g1() { return {}; } const int g2() { return {}; } int main() { f(g1()); // outputs "f(const T&&)" as […]

不使用代码删除自定义事件日志源

我有一个应用程序已经创build了一些自定义事件日志源来帮助过滤它的输出。 我怎样才能从机器删除自定义源,而无需编写任何代码作为运行使用System.Diagnostics.EventLog.Delete快速程序是不可能的。 我已经尝试使用RegEdit从[HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSetXXX \ Services \ Eventlog]中删除自定义源,但应用程序的行为就好像日志在幕后仍然存在。 我还有什么遗漏?

Flash / ActionScript 3.0中的StackTrace

我想在我的代码的任何函数中看到堆栈跟踪,所以我做了这样的事情来调用它并打印堆栈跟踪: public function PrintStackTrace() { try { throw new Error('StackTrace'); } catch (e:Error) { trace(e.getStackTrace()); } } 我想知道是否有其他方式来做到这一点。 在某些地方,Error类会创build堆栈跟踪,但也许它不会使用ActionScript 3.0来实现,所以也许这不是可行的,但是我想知道。 谢谢!

OCaml:在另一个expression式中匹配expression式?

我目前正在与OCaml一起开展一个小型项目。 一个简单的mathexpression式简化器。 我应该在expression式中find某些模式,并简化它们,以减lessexpression式中括号的数量。 到目前为止,我已经能够实现除了两个以外的大多数规则,为此我决定创build一个recursion的,模式匹配的“filter”函数。 我需要实现的两个规则是: – 将formsa – (b + c)或类似forms的所有expression式转换为a – b – c – 将a /(b * c)或类似forms的所有expression式转换为a / b / c …我怀疑是相当简单的,一旦我设法实现一个,我可以很容易地实现其他。 但是,我遇到了recursion模式匹配function的麻烦。 我的typesexpression是这样的: type expr = | Var of string (* variable *) | Sum of expr * expr (* sum *) | Diff of expr * expr (* difference *) […]