有没有办法避免在括号中封装javascript但仍然可以获得好处?

时间:2015-09-14 17:54:52

标签: javascript optimization private readability

最近,我注意到javascript约定一直在变化。现在,无论我在哪里,我都会看到其他使用javascript的开发人员将其功能包装在括号中以使其成为私有(或类似的东西,我不确定,javascript是我的第二语言)。例如......

(function something()
    { // something happens here 
    })();

随着东西(特别是附加功能)被嵌套,这会损害代码的可读性,并且实际上让javascript变得丑陋,看起来越来越像LISP中编程的噩梦(如何获得它的昵称"大量的白痴单括号)。如果我必须填写一个完整的单词(甚至几个单词)以获得相同的效果,我不在乎。是否有一个很好的替代方法可以封装在括号中以使函数成为私有函数并获得括号封装的其他好处?

编辑:显然我误解了我所质疑的外围圆括号的重点。实际上,这使我对他们的目的更加困惑。

2 个答案:

答案 0 :(得分:1)

  • 您可以定义常规功能并在需要时调用它

实施例

var myObject = {
    something: function() {
    },

    somethingElse: function() {
    }
};

myObject.something();
  • ES6 / ES2015现在有模块支持

    //------ lib.js ------
    export const sqrt = Math.sqrt;
    export function square(x) {
        return x * x;
    }
    
    export function diag(x, y) {
        return sqrt(square(x) + square(y));
    }
    
    //------ main.js ------
    import { square, diag } from 'lib';
    console.log(square(11)); // 121
    console.log(diag(4, 3)); // 5
    

您可以阅读有关模块here

的更多信息

答案 1 :(得分:1)

没有。 (Delta ES6模块,或其他类似预先包装的框架。)

唯一需要这种语法的方法是,如果你有一个IIFE,它只有两个额外的parens(将函数转换成一个可以被评估的表达式,即执行)。

你也可以定义函数并稍后执行它,例如,完全避免使用IIFE。