Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS的参数-哪种方法最好?_Javascript_Jquery_Html_Regex_Performance - Fatal编程技术网

Javascript JS的参数-哪种方法最好?

Javascript JS的参数-哪种方法最好?,javascript,jquery,html,regex,performance,Javascript,Jquery,Html,Regex,Performance,我想加载一个JS,他的行为应该根据一个参数而有所不同。我认为这样做的方法之一可能是: <script src="script.js?type=a" type="text/javascript"></script> <script src="script.js?type=b" type="text/javascript"></script> ... (以上功能来自) 然而,我不确定这是否是最好的方法。您是否建议使用其他方法,例如,在中加载全局变量,

我想加载一个JS,他的行为应该根据一个参数而有所不同。我认为这样做的方法之一可能是:

<script src="script.js?type=a" type="text/javascript"></script>
<script src="script.js?type=b" type="text/javascript"></script>
...
(以上功能来自)


然而,我不确定这是否是最好的方法。您是否建议使用其他方法,例如,在
中加载全局变量,然后从JS中读取它们?

在获取外部脚本之前,我只需设置一个全局变量,然后在内部使用它:

<script>var someParameter = 'a';</script>
<script src="script.js"></script>
var someParameter='a';

一般来说,可能有更好的方法来组织代码,但配置参数比URL查询更简单的方法是使用参数调用定义的函数:

外部脚本(foo.js):

HTML:


$(document).ready
已经是一个异步调用,因此这可能比其他调用更简单,但一般来说,您可以使用IIFE(立即调用的函数表达式):
(函数(参数){})(参数值)

您给出的
getURLParameter
函数将使用您在地址栏中看到的URL,不是加载了
的那个

要获得该信息,您需要将
location.search
替换为

Array.prototype.pop.call(document.getElementsByTagName('script')).getAttribute("src");

您可以使用php制作javascript并使用

var parameters = <?php echo json_encode($_GET); ?>
function getURLParameter(name) {
    return parameters[name];
}
var参数=
函数getURLParameter(名称){
返回参数[名称];
}

这看起来像是一场维护噩梦。我不会这么做。神奇的全局变量是一个令人头痛的问题。正如我所提到的,我考虑过这个问题,但我认为这不是最优雅的解决方案,正如上面所说,这是一个需要维护的噩梦?足够公平-我想这取决于参数的复杂程度和使用频率。我只是提出了这个建议,因为我之前对参数做了一些研究,发现这是最好的方法。如何表现不同?参数是否可以更改js文件的输出?参数可以多次更改也有意义吗?我在你的问题中没有看到任何与regex相关的东西,除了源代码中的切线。我认为这足以在我的问题中添加标记了吗?如果不是,请随意删除它(您或任何版主)。我忘了说(抱歉)我的脚本是$(文档)。准备就绪,所以这不是我想要的解决方案,但我知道您的意思,谢谢。您仍然可以相当轻松地完成。我将用一个例子来修正我的答案。我认为这是在不了解更多具体规则的情况下做你所要求的事情的最聪明的方法。Url参数将是实现此解决方案的一种黑客方式。另外,你还有一个额外的好处,那就是明确你的意图。我想我是按照这个方法来做我想做的事情的。乍一看,它看起来很干净,不会在将来造成任何问题。谢谢你的帮助!它必须是纯javascript。我在过去使用过这种解决方法,但在这种情况下我更愿意放弃它(否则我将不得不在我的服务器上运行对我的脚本的PHP支持)。你是对的-我没有太多注意这个示例,它只是为了说明我的意思,但我实际上并没有使用它。谢谢你指出这一点。
<script src="foo.js"></script>
<script>foo("parameter value");</script>
function (param) {
    $(document).ready(function () {
        // Use param
    });
}
Array.prototype.pop.call(document.getElementsByTagName('script')).getAttribute("src");
var parameters = <?php echo json_encode($_GET); ?>
function getURLParameter(name) {
    return parameters[name];
}