我刚刚开始使用javascript,我看到了一些我无法解释的内容 我有名为TestClass.js的js文件及其以下内容:
TestClass.SetError = function (errorDescription, errorCode, typedErrorCode)
{
alert("SetError ");
}
function SetError2(errorCode)
{
alert("SetError2 ");
}
有人可以解释一下SetError和SetError2之间的区别吗?
答案 0 :(得分:1)
SetError是对象TestClass的一种方法。而SetError2是一个全局函数。
答案 1 :(得分:1)
第一段代码(SetError)包含Anonymous Function Expression
,其中第二段代码(SetError2)包含Function Declaration
。见Function Declarations vs. Function Expressions
另一篇好文章:Named function expressions demystified
摘录:
函数声明在任何其他声明之前被解析和评估 表达是。即使声明位于源的最后, 它将被评估最重要的任何其他表达式 范围。
这基本上是主要区别。这不是很大,但值得注意。
答案 2 :(得分:1)
不同之处在于浏览器如何将它们加载到执行上下文中。
在执行任何代码之前加载函数。
while表达式仅在解释器到达该行代码时加载。
答案 3 :(得分:0)
SetError2
是一种“命名”方法。
TestClass.SetError
是引用匿名方法的TestClass
成员变量。
这意味着您可以稍后执行TestClass.SetError = function(){ alert ("SetError2");}
答案 4 :(得分:0)
Javascript具有对象和功能。
对象可以包含对象和/或函数。
这是一个对象:
var TestClass = {};
您可以将新对象添加到TestClass对象,如下所示:
var TestClass = { object : {}};
然后您可以像这样访问它:
var a = TestClass.object;
您可以在对象中拥有一个函数:
var TestClass = {object:{}, setError:function(){/*function body*/}};
现在您可以像这样调用测试类的功能:
TestClass.setError();
此外,函数本身可以这样定义:
function setError2(){/*function body*/}
你可以像这样调用:
setError2();
通常,我们在对象中定义函数以某种方式在Javascript中实现OO并防止混乱的js代码。
答案 5 :(得分:-1)
此:
function SetError2(errorCode) {
alert("SetError2 ");
}
等同于:
window.SetError2 = function(errorCode) {
alert("SetError2 ");
}