我做了一些研究,但我还没有找到令人满意的答案.我有一个javascript项目文件和一个库,其中一些函数定义如下:
//Library.js
FElib = {
initLib: function(param1, param2){
var init = param1 || true;
console.log(init);
}
}
Run Code Online (Sandbox Code Playgroud)
现在在我的project.js文件中,我调用该函数并将false作为参数传递
FElib.initLib(false, 'test');
Run Code Online (Sandbox Code Playgroud)
在这种情况下,如果我在变量声明之前记录它,param1会给我'false'.之后它使用默认的'true'.它似乎是解释错误的未定义我认为它只检查undefined ..
为什么这样的行为?
当我使用字符串时,它完全正常工作.使用0或1作为参数也不起作用,并且它使用默认变量声明.
作为一种解决方法,我将变量声明为一个对象,它再次正常工作:
//Library.js
FElib = {
initLib: function(options){
var defaults = {
param1: true,
param2: 'string',
};
var options = $.extend({}, defaults, options);
}
}
Run Code Online (Sandbox Code Playgroud)
现在调用函数即使使用布尔参数也能正常工作:
FElib.initLib({'param1':false, 'param2':'string123'});
Run Code Online (Sandbox Code Playgroud)
第二种方法似乎只有一点开销,只考虑一个布尔变量作为参数.
任何人都可以解释这种行为吗?
我正在为一家使用PHP的公司工作.正在使用不同的CMS系统,如Wordpress或Magento.我们正在使用拥有自己的存储库服务器的git,我们必须将不同的客户部署到不同的服务器.
我已经使用capistrano设置了一个部署脚本,但是数据库同步非常棘手.
想象一下,实时数据库包含用户数据,我必须在网站启动后创建一些新功能,并且数据库中已经有大量的SQL数据.我个人使用虚拟数据库,因为我不需要任何客户信息.
你是如何让PHP极客们部署你的数据库的呢?我不想更改内容,只迁移新表或修改过的表.我正在寻找一个完整的部署解决方案.如果需要的话,除了卡皮斯特拉诺,我也会开放其他选项.特别是对于Magento,我有严重的问题要保持我的数据库同步..
任何帮助表示赞赏.