哪种解决方案更好(根据最佳做法,性能......)?
A)两个全局函数
var optDatePart = function optDatePart(num)
{
var num = Math.abs(num);
return (num < 10 ? "0" : "") + num;
};
var getFormattedDate = function getFormattedDate()
{
var date = new Date();
return date.getFullYear() + "-" +
optDatePart(date.getDate()) + "-" +
optDatePart(date.getMonth() + 1) + " " +
optDatePart(date.getHours()) + ":" +
optDatePart(date.getMinutes());
};
B)关闭
var getFormattedDate = (function()
{
var optDatePart = function optDatePart(num)
{
var num = Math.abs(num);
return (num < 10 ? "0" : "") + num;
};
return function getFormattedDate()
{
var date = new Date();
return date.getFullYear() + "-" +
optDatePart(date.getDate()) + "-" +
optDatePart(date.getMonth() + 1) + " " +
optDatePart(date.getHours()) + ":" +
optDatePart(date.getMinutes());
};
}) ();
第一个功能仅用于第二个功能。
答案 0 :(得分:2)
都不是。为什么要打扰外面的IIFE?
如果第一个函数仅在第二个函数中使用,只需将一个函数放在另一个函数中:
function getFormattedDate()
{
function optDatePart(num)
{
var num = Math.abs(num);
return (num < 10 ? "0" : "") + num;
};
var date = new Date();
return date.getFullYear() + "-" +
optDatePart(date.getDate()) + "-" +
optDatePart(date.getMonth() + 1) + " " +
optDatePart(date.getHours()) + ":" +
optDatePart(date.getMinutes());
};
答案 1 :(得分:1)
闭包几乎总是比混淆全局命名空间(即冲突)更受欢迎。