两种函数定义的差别 var main = function(){};function main(){}都是定义一个函数, 请问它们的区别在哪里? 哪种好一些? 我如果做迭代运算, 用哪个好一点? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 var POBJ = new Object(); POBJ.Show = function() { alert("Hello World!"); }; function MyClass() { if(typeof(MyClass._initialized)== "undefined") { //放在此处就不行了。 //MyClass.prototype = POBJ; /* 这是方式也行,不过要是方法多的话, 直接定义好一个对象,然后一赋值更方便一些 MyClass.prototype.Show = function() { alert("Hello World!"); } */ MyClass._initialized = true; } } //放在此处就行了 MyClass.prototype = POBJ; var obj = new MyClass(); obj.Show(); 第1个是给变量main赋值匿名函数对象第2个定义函数对象 main<script>alert(main);var main=function(){}//function main(){}</script> 从使用的角度两者没有什么区别。事实上他们产生的结果也都是一样的, 都产生了Function的实例,然后有变量名main指向它。但是你要做迭代, 觉得用第二种看起来要自然一些。就拿比较简单的情况:递归来做例子:这样写要自然多了function fab(n){ if(n==1) return 1; else return n*fab(n-1);}要是这样写:var fab1 = function(n){ if(n==1)return 1; else return n*fab1(n-1);}就会觉得明明是在定义变量, 怎么还用这个变量了。 1、预定义的区别,参见:http://www.jslab.org.cn/?tag=predefined2、如果 var xxx = funct yyy(){}; 那么将和 function yyy(){}的scope chain不一样,参见:http://www.jslab.org.cn/?tag=ScopeChainAndClosure 谢谢各位了. 最终思考, 觉得作为一个迭代的内部过程函数, 不需要预定义, 直接var func = function(){};定义就好了. 只要二者没有太大的效率差异就可以了~ 请问编程中有没有比较明确的说法描述啥叫入口的概念? 最近频繁的使用表单验证,于是自己写了一段表单验证的JS,愿跟大家分享。本人初学JS,写的不好,还请指教!当然,比起JQuery的validate差的实在太远.. 如何防止自己的网站被别人框架 JS验证的问题,请人解决.. 如何去掉ie窗口的关闭按钮? 文本框onblur事件一段代码错在哪了? 一个关于页面刷新的问题,请指点 在线求助!小弟不胜感激!!!! 一个高挑战性问题¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥ 求助 数码时钟的有些图片加载不出来 JS变量传值~~~~~~~~急 document.writeln()??
POBJ.Show = function()
{
alert("Hello World!");
}; function MyClass()
{
if(typeof(MyClass._initialized)== "undefined")
{
//放在此处就不行了。
//MyClass.prototype = POBJ;
/*
这是方式也行,不过要是方法多的话,
直接定义好一个对象,然后一赋值更方便一些
MyClass.prototype.Show = function()
{
alert("Hello World!");
}
*/
MyClass._initialized = true;
}
}
//放在此处就行了
MyClass.prototype = POBJ;
var obj = new MyClass();
obj.Show();
第2个定义函数对象 main<script>
alert(main);
var main=function(){}//function main(){}
</script>
但是你要做迭代, 觉得用第二种看起来要自然一些。
就拿比较简单的情况:递归来做例子:
这样写要自然多了
function fab(n){
if(n==1) return 1;
else return n*fab(n-1);
}
要是这样写:
var fab1 = function(n){
if(n==1)return 1;
else return n*fab1(n-1);
}
就会觉得明明是在定义变量, 怎么还用这个变量了。
最终思考, 觉得作为一个迭代的内部过程函数, 不需要预定义, 直接var func = function(){};定义就好了. 只要二者没有太大的效率差异就可以了~