格式化javascript函数的正确方法

时间:2011-10-16 06:03:55

标签: javascript function coding-style

快一点......

格式化javascript函数的正确方法是什么?

我这样看:

function doThis(){
}

并且像这样:

doThis = function(){
}

或许它没有任何区别。请让我知道什么是最好的,或者他们都有不同的rasons或目的。

干杯

C

3 个答案:

答案 0 :(得分:11)

它们是两个不同的东西,虽然它们都创建了一个函数(并将其赋值给变量)。

function name () {
}

函数声明(或“函数声明”)。只有 legal 才能作为顶级脚本元素出现或直接作为函数的元素出现:也就是说,出现函数语句不合法ifwhile等内部。所有函数语句都“被提升”到函数(或脚本)的顶部,因此以下内容是有效的:

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张幻灯片,他们谈论这个

[1] http://ejohn.org/apps/learn/