我在javascript中有一个main函数,它是函数a(){这里有些代码},我在这个main函数中也有一个子函数,看起来像
function a() {
function b() {
// some code here
}
}
现在我想直接调用函数b。然后怎么做。
答案 0 :(得分:3)
你做不到。但是你可以这样做:
function a() {
this.b = function () {
some code here
}
}
然后称之为:
var x = new a();
a.b();
您还可以使用您的函数创建对象文字:
var a = {
b: function ()
{
//some code here
}
};
然后说:
a.b();
您还可以在函数对象本身上创建一个属性,并以这种方式访问它:
function a()
{
};
a.b = function ()
{
//Some code here
};
然后用:
来调用它a.b();
答案 1 :(得分:1)
您可以尝试将b
显式公开给全局对象,如下所示:
function a() {
function b() {
// some code here
}
window.exposed = b;
}
答案 2 :(得分:0)
不要在函数a中声明函数b,只需像这样调用它
function b() {
some code here
}
function a() {
b();
}
答案 3 :(得分:0)
这里有很多解决方案,我认为唯一适合的是将函数附加到全局对象,使其看起来像声明的函数。唯一的区别是它在a
运行之前不可用:
function a() {
// Protect against ES5 strict mode, assume function is called as global code
if (typeof this !== undefined) {
this.b = function() { /* whatever */ };
}
}
或者以下可能更适合您的编码风格:
function a() {
function b() { /* whatever */};
if (typeof this !== undefined) {
this.b = b;
}
}
简称为:
a();
然后在ES3或ES5非严格模式下,它将按预期工作。要克服ES5严格的限制,上面的内容会导致 未定义,请将 a 作为全局代码调用并明确设置 this :
a.call(this);
或对全局对象的一些其他合适的引用。
我没有使用 window ,因为这不太可靠,尤其是因为非浏览器主机可能没有 window 对象。