当我在练习跨浏览器代码时,我意识到我制作的整个 util obj 中只有一个函数需要返回,我想知道为什么其他函数不需要返回。据我了解,当没有调用 return 时,JavaScript 将返回 undefined ,除非它是一个构造函数,在这种情况下它将返回 this。
我用 util 中的所有函数测试了它,返回了每个条件的结果并且它有效。然后我在条件的任何结果中都没有返回的情况下测试了它,但是如果没有在 getTarget 函数中返回它就无法工作。
谁能帮我更好地理解其中的原因?
jsFiddle 在这里 http://jsfiddle.net/SusannDelgado/CnWzE/
var evtUtil = {
//cross browser Events
addEvent: function (el, type, fn) {
if (typeof addEventListener !== "undefined") {
el.addEventListener(type, fn, false);
} else if (typeof attachEvent !== "undefined") {
el.attachEvent("on" + type, fn);
} else {
el["on" + type] = fn;
}
},
removeEvent: function (el, type, fn) {
if (typeof removeEventListener !== "undefined") {
el.removeEventListener(type, fn, false);
} else if (typeof detachEvent !== "undefined") {
el.detachEvent("on" + type, fn);
} else {
el["on" + type] = null;
}
},
getTarget: function (event) {
if (typeof event.target !== "undefined") {
return event.target;
} else {
return event.srcElement;
}
},
preventDefault: function (event) {
if (typeof event.preventDefault !== "undefined") {
event.preventDefault();
} else {
event.returnValue = false;
}
}
};
最佳答案
Return 用于将某些东西从函数传递给调用它的代码(一般来说)。因此,在一个不需要传回任何东西的函数中,例如 removeEvent
只是修改其他东西的状态,这是没有必要的。
getTarget
的不同之处在于,正如其名称所示,您正在尝试检索某物(在本例中为事件的目标对象)。因此,在调用 getTarget
的代码中,需要“something”。正如你所说,没有返回,JS 只是返回 undefined
。
关于javascript - 我什么时候可以在 javascript 中省略 return,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16951287/