javascript – 使用命名的即时调用函数表达式(IIFE)而不是注释

前端之家收集整理的这篇文章主要介绍了javascript – 使用命名的即时调用函数表达式(IIFE)而不是注释前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在JS代码中使用命名的IIFE来描述和分组相关代码的优缺点是什么?

我一直在使用这种“模式”来将结构借给我更多的程序代码,只能在一个地方执行.

(function hideStuffOnInstantiaton(){
    $('oneThing').hide().removeClass();
    $('#somethign_else').slideUp();
    $('.foo').fadeOut();
}());

我发现这更适合于:

// hide Stuff on Instantiaton
$('oneThing').hide().removeClass();
$('#somethign_else').slideUp();
$('.foo').fadeOut();

因为随着时间的推移,评论可能与代码分离,并且它不会立即明显地表明该评论适用于哪些行

并:

function hideStuffOnInstantiaton(){
    $('oneThing').hide().removeClass();
    $('#somethign_else').slideUp();
    $('.foo').fadeOut();
};

hideStuffOnInstantiaton();

因为为什么分离函数及其执行,如果它只在一个地方执行?

使用此模式时是否有任何性能,可维护性,可测试性或跨浏览器注意事项?我不相信我已经看到很多人在野外使用这个,但我觉得它可能非常有用

解决方法

why separate the function and its execution if its only executed in one place?

在这种情况下,没有任何理由使用函数(具有开销) – 只是内联代码.并且不要在函数名中隐藏注释,我称之为坏习惯.如果有人将注释与代码分开,那么他的错误不是你的 – 实际上他也可以在您的IENFE中完全不相关的内容.

虽然这种模式可能会有用,如果您重用该函数(递归)或需要它来构建一个关闭的东西,而命名的函数使堆栈跟踪更容易调试,那么有various bugs in IE.所以如果你不需要它 – 而不是你.

如果你想表达你的评论适用于一个代码块,你可以明确地使用一个block语句,并把你的评论放在头上:

{ // hide Stuff on Instantiaton
    $('oneThing').hide().removeClass();
    $('#somethign_else').slideUp();
    $('.foo').fadeOut();
}

…虽然这可能会混淆你的读者和多余的IEFE.

猜你在找的JavaScript相关文章