我是rails的新手,我还在尝试一些事情,到目前为止我已经阅读过关于RoR的资产管道不允许重复文件名,即app/stylesheet/style.css.scss
和vendor/stylesheet/style.css.scss
只有第一个将有效,好吧,没有问题我可以处理,但是在java脚本中的函数名称怎么样,比方说我想调用jquery的淡入淡出函数但被调用的是bootstrap-jquery的淡入淡出效果,我假设他们两者都有相同的名称但行为不同......
我有
fadeEffect = function() {
code segment[1]
};
另一方面我有文件[2] .js.coffee
fadeEffect = function() {
code segment[2]
};
因此它们具有不同的文件名,但它们对于给定的函数具有相同的名称,如何调用第一个js文件或第二个文件中的一个?他们都来自供应商,更改名称不会是优雅的事情,所以我想知道是否有解决方案吗?
感谢阅读!
答案 0 :(得分:2)
您不能在同一范围内拥有两个具有相同名称的功能,并且可以同时访问这两个功能。定义的最后一个(由浏览器解析javascript的顺序确定)是将生效的那个。
您需要包含这些定义的范围,以便它们不会相互冲突(例如,它们不是全局的,不在同一范围内),或者您必须更改其中一个定义的名称。
如果其中任何一个只在本地需要,你可以将代码括在一个IIFE(立即调用的函数表达式)中,它创建一个单独的局部作用域,这样你就可以在本地使用某些东西,但它没有在全局定义它可以与其他事情发生冲突。
// create new local function scope to isolate our variables so they dont
// overwrite other variables of the same name
(function() {
// add var in front of the variable name to make it a local variable
var fadeEffect = function() {
code segment[2]
}
// use this copy of fadeEffect inside this function block
// this other definition of fadeEffect will not be available here, but
// this one won't override the other one outside this function scope
})();