快一点......
格式化javascript函数的正确方法是什么?
我这样看:
function doThis(){
}
并且像这样:
doThis = function(){
}
或许它没有任何区别。请让我知道什么是最好的,或者他们都有不同的rasons或目的。
干杯
C
答案 0 :(得分:11)
它们是两个不同的东西,虽然它们都创建了一个函数(并将其赋值给变量)。
function name () {
}
是函数声明(或“函数声明”)。只有 legal 才能作为顶级脚本元素出现或直接作为函数的元素出现:也就是说,出现函数语句不合法在if
或while
等内部。所有函数语句都“被提升”到函数(或脚本)的顶部,因此以下内容是有效的:
a()
function a () { alert("a") }
表格形式:
variable = function name () {} // or variable = function () {}
function关键字位于 function-expression 上下文中:它创建一个新的函数对象,并将生成的函数对象(只是“正常值”)分配给variable
。以下内容无效,因为函数表达式未解除。
var b
b() // oops, does not evaluate to a function-object yet!
b = function b () { alert("b") }
尽管如此,“正确的方法”是使用函数声明(“函数声明”)表单,除非有理由不这样做。
快乐的编码。
另见:
答案 1 :(得分:3)
这些语法之间存在重要且有用的区别。
在OOP中,使用封装是非常有用的,封装是一种限制对其他对象的访问的机制。 javascript中的公共和私有变量/函数之间的区别可以这样说:
function Color(value)
{
// public variable
this.value = value; // get from arguments
// private variable
var _name = "test";
// public function
this.getRandomColor = function( )
{
return Math.random() * 0xFFFFFF;
}
// private function
function getNiceColor()
{
return 0xffcc00;
}
}
可以访问颜色实例中的公共变量和函数:
// create instance of Color
var color = new Color(0xFF0000);
alert( color.value ); // returns red color
alert( color.getRandomColor() ); // returns random color
无法从color-instance访问私有变量和函数:
var color = new Color(0x0000FF);
alert( color.getNiceColor() ); // error in console; property does not exist, because function is private.
alert( color._name ); // error in console; property does not exist, because variable is private.
注意强>
在使用公共函数时使用好的原型可能会更好,因为这种编码方法可能会导致遗传问题。
答案 2 :(得分:2)
查看[1]中的前10-15张幻灯片,他们谈论这个