在以前的帮助中,我使用的是这样的东西:
(function (global) {
// your code here
global.myGlobalVar = myVar
}(this));
这对变量很有效,但我如何对函数做到这一点?
例如,我尝试过这个:
(function (global) {
function something()
{
// do something, return something
}
global.something()= something();
}(this));
但这不起作用:(
如何使它与函数一起工作?
谢谢!
编辑:
请注意,这是在html页面中调用的,首先我这样做:
<script language="Javascript" src="four.js">
然后
<body onload="javascript:something()">
如果你想声明一个函数,你不应该执行。所以删除()
。
(function (global) {
function something()
{
// do something, return something
}
global.something = something; // something is the variable
// containing the function and
// you store it into global
}(window));
在Javascript中,函数可以存储在变量中(因为它基本上是一个对象(。
你可以使用闭包做这样的事情:
(function (global) {
global.something= function () {
// do something, return something
};
}(this));
记住,如果你在函数名后面写()
,就意味着你在执行它。如果你想传递函数本身,只需写它的名称。
考虑这个例子:
var x = something(); //x will hold the RETURN value of 'something'
var y = something; //y will hold a reference to the function itself
所以在做了第二个例子之后,你可以做:var x = y();
,如果你只是简单地做了第一个例子,它实际上会给你同样的结果。
(function (global) {
global.something = function()
{
// do something, return something
}
}(this));
更新问题:
<body onload="javascript:something()">
这行不通。试试这个:
<body onload="something()">