函数不是javascript中的函数
我试图使用模块模式组织代码,但我发现myComponent不是函数错误。嗯,怎么了函数不是javascript中的函数,javascript,Javascript,我试图使用模块模式组织代码,但我发现myComponent不是函数错误。嗯,怎么了 var canva = new fabric.Canvas('canvas'); var myComponent = function(canva) { var init = function() { console.log('init'); }; return { init:init }; }(canvas); myComponent(c
var canva = new fabric.Canvas('canvas');
var myComponent = function(canva) {
var init = function() {
console.log('init');
};
return {
init:init
};
}(canvas);
myComponent(canva).init();
尝试:
//并将其用作
myComponent(null).init();
尝试:
//并将其用作
myComponent(null).init();
您可以使用以下语法:
var myComponent = function(canva){
//function body
}(canvas);
但是,在对函数进行贴花后,您不必调用该函数,因此,您必须使用以下语法:
var myComponent = function(canva){
//function body
}// remove : (canvas);
您可以使用以下语法:
var myComponent = function(canva){
//function body
}(canvas);
但是,在对函数进行贴花后,您不必调用该函数,因此,您必须使用以下语法:
var myComponent = function(canva){
//function body
}// remove : (canvas);
默认情况下,您可以使用canvas初始化函数,也可以将其作为参数提供,但不能同时提供两者
var canva = new fabric.Canvas('canvas');
var myComponent = function(canva){
var init = function(){
console.log('init')
}
return{
init:init
}
}(canva);
myComponent.init();
(如果组件的使用者/客户端不需要配置使用的画布/依赖项,则此变体非常有用)
或
(如果组件的使用者/客户端需要为组件提供自己的参数化/自定义依赖项,则此变体非常有用)您可以默认使用画布初始化函数,也可以将其作为参数提供,但不能同时提供两者
var canva = new fabric.Canvas('canvas');
var myComponent = function(canva){
var init = function(){
console.log('init')
}
return{
init:init
}
}(canva);
myComponent.init();
(如果组件的使用者/客户端不需要配置使用的画布/依赖项,则此变体非常有用)
或
(如果组件的使用者/客户端需要为组件提供自己的参数化/自定义依赖项,则此变体非常有用)长话短说,这是一个解析器问题,您需要用括号包装自调用函数(请参见下面的代码) 当解析器在全局范围内遇到function关键字时,或 在函数内部,它将其视为函数声明(语句), 默认情况下,不作为函数表达式。如果你不明白 告诉解析器需要一个表达式,它会看到它认为是什么 没有名称的函数声明,并引发SyntaxError 异常,因为函数声明需要名称 上述确切措词应归功于:
另外,更改myComponent(canva.init()to
myComponent.init()代码>myComponent
不是一个函数。长话短说,这是一个解析器问题,您需要用括号包装自调用函数(请参见下面的代码)
当解析器在全局范围内遇到function关键字时,或
在函数内部,它将其视为函数声明(语句),
默认情况下,不作为函数表达式。如果你不明白
告诉解析器需要一个表达式,它会看到它认为是什么
没有名称的函数声明,并引发SyntaxError
异常,因为函数声明需要名称
上述确切措词应归功于:
另外,更改myComponent(canva.init()
tomyComponent.init()代码>myComponent
不是一个函数。function(canva){
是一个IIFE,它返回一个带有单个属性init的对象,init是一个函数……请注意,这意味着myComponent是返回的对象,而不是一个函数function(canva){
是一个IIFE,它返回一个带有单个属性init的对象,init是一个函数……请注意,这意味着myComponent是返回的对象,而不是函数