快速回答:
格式化JavaScript函数的正确方式是什么?
我认为应该像这样:
function doThis(){
}
并且像这样:
doThis = function(){
}
也许这没有什么区别。请告诉我哪个更好,或者它们各自有不同的原因或目的。
祝福
C
快速回答:
格式化JavaScript函数的正确方式是什么?
我认为应该像这样:
function doThis(){
}
doThis = function(){
}
它们是两个不同的东西,尽管它们都会创建一个函数(并将其赋值给一个变量)。
function name () {
}
一个 函数语句(或称为“函数声明”)。它只能出现在顶级脚本元素或直接作为函数元素中的一部分:也就是说,一个函数语句不能出现在if
, 或者 while
等语句中。所有的函数语句都会被“提升”到函数(或脚本)的顶部, 因此以下代码是有效的:
a()
function a () { alert("a") }
在表单中:
variable = function name () {} // or variable = function () {}
function关键字处于函数表达式上下文中:它创建一个新的函数对象,并将生成的函数对象(只是一个“普通值”)分配给变量。以下内容无效,因为函数表达式不会提升。
var b
b() // oops, does not evaluate to a function-object yet!
b = function b () { alert("b") }
尽管如此,"正确的方式"是使用函数声明形式 ("function declaration") ,除非有理由使用其他形式。
祝编码愉快。
另请参阅:
这些语法之间有一个重要且有用的区别。
在面向对象编程中,使用封装非常有用,它是一种限制访问其他对象的机制。在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
私有变量和函数无法从实例中访问:
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.
注意
在使用公共函数时最好使用传统的原型方法,因为这种编码方法可能会导致继承方面的问题。