我只是在学习JavaScript,而我正在研究其他人的代码以便学习。我试图解决的一件事是在JavaScript中做同样事情的不同方式。
我的问题是:
function create(){};
与create: function(){};
相同吗?
如果没有什么区别?何时使用单一的打字方式和另一种方式?结肠是什么意思?
答案 0 :(得分:3)
这是创建函数的最标准方法:
function create(){
console.log("inside function");
}
如果函数是对象的属性,则使用冒号:
myobject = {
create: function(){
console.log("inside function");
}
};
也可以分配功能:
var create = function(){
console.log("inside function");
}
函数也是对象,javascript中它们没有区别,因为javascript很奇怪。以上是:
create.myproperty = true;
是有效的语法。
为了使它更奇怪,可以像上面那样分配匿名函数,但也可以自我调用:
(function () {
console.log("inside function");
})();
这很麻烦,但遗憾的是在图书馆中使用了很多。
答案 1 :(得分:3)
仅冒号语法并不意味着您正在创建一个函数。在创建Object Literal时使用它。冒号充当赋值运算符(如=
),为对象的属性赋予其值。
在JavaScript中,对象实际上只有属性(而不是方法)。但是,这些属性可以存储函数(函数是JavaScript中的数据)。
所以,这是一个创建一些属性的对象文字:
var myObject = {
property1: "42",
anotherProperty: true,
aPropertyThatStoresAFunction: function(){
console.log("You invoked the function stored in the property!");
}
};
// Now, we can access the object's properties:
console.log(myObject.property1);
console.log(myObject.anotherProperty);
console.log(myObject.aPropertyThatStoresAFunction); // Notice here the actual function's code is logged?
// But, since functions are also bits of invocable code, if you access the function
// stored in the property and then add () on to the end of it, you can invoke the function
myObject.aPropertyThatStoresAFunction();