繁体   English   中英

如何在全局中设置javascript函数?

[英]How can I set javascript function in global?

我想在全局js中设置函数。 所以它可以从任何地方调用

我有这个功能:

$(function () {
    function formatCurrency(input) {
        return input.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1.");
    }
});

我把功能放在

C:\\ XAMPP \\ htdocs中\\ mysystem \\资源\\资产\\ JS \\ main.js

然后在此添加<script src="{{URL::asset('/resources/assets/js/main.js')}}"></script>

C:\\ XAMPP \\ htdocs中\\ mysystem \\资源\\意见\\布局\\ app.blade

当执行时,在控制台上存在如下错误:

GET http://mysystem.dev/resources/assets/js/main.js 404(未找到)

我该如何解决?

您应该将函数定义为窗口对象的方法。

window.formatCurrency = function(input) {
    return input.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1.");
}

另一种更干净的方法是将函数定义为称为Utils的对象的方法,如下所示:

var Utils = (function(){
    function formatCurrency(input){
        return input.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1.");
    }
    return {
        formatCurrency: formatCurrency
    }
}());

这样做不会污染全局名称空间。 您将在全局名称空间中仅定义一个称为Util的变量,该变量将包含一个对象,该对象包含可以由应用程序的其他部分使用的有用功能。 因为它是您看不到后一种方法的好处。 但是,您可以考虑如果要再使用3个函数,而自己又使用2个其他函数作为助手,情况会如何。 如果是这样的话,您的return语句还将包含另外3个函数,而我之前提到的2个函数根本不会被使用!

问题似乎是您使用的asset()错误。

资产是指/public的文件。

您应该编译/最小化用于生产的JS,并将其放在/public某个位置,即/public/js/my.js

您可以这样定义全局函数

window.formatCurrency = function(input){
            return input.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1.");
        }

并且您在ready函数($(function))中定义了函数,那么您也必须在ready函数中调用它。 因此,最好在就绪功能之外或在自调用功能中定义它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM