推荐关注
› Meteor
› JSLint - a JavaScript code quality tool
› jsFiddle
› D3.js
› WebStorm
推荐书目
› JavaScript 权威指南第 5 版
› Closure: The Definitive Guide
wwjvtwoex

如何防止 JS 函数重名 ?

  •  
  •   wwjvtwoex · Apr 11, 2018 · 6923 views
    This topic created in 3136 days ago, the information mentioned may be changed or developed.

    我的方法:const f = function (){}
    还有别的方法吗 ?

    25 replies  •  2018-04-15 14:01:28 +08:00
    Mutoo
    Mutoo
    Apr 11, 2018❤️3
    1
    VeryVeryLongFunctionNameThatEvenCantBeGuessedByAnyotherDevelopers = function() {}
    chenset
    chenset
    Apr 11, 2018❤️1
    2
    ```
    (function(){
    function ff(){

    }
    })();
    ```
    rekulas
    rekulas
    Apr 11, 2018
    3
    1523417455567 时间戳

    veryWonderfulFunc1523417455567 = function() {}
    wwjvtwoex
    wwjvtwoex
    OP
    Apr 11, 2018
    4
    @Mutoo 我的意思是,一旦函数重名,编译器能报错,而不是静默地覆盖
    wenzichel
    wenzichel
    Apr 11, 2018❤️2
    5
    1. 命名空间: 把相关的函数写到一个对象或者类中;
    2. 模块化: 把函数写到一个文件里,然后其他的文件进行 import;
    3. 闭包
    Rhonin
    Rhonin
    Apr 11, 2018
    6
    export function xx () {}
    import { xx } from xxx
    wenzichel
    wenzichel
    Apr 11, 2018
    7
    4. 计数器: 用一个全局变量 counter 来计数,每命名一个函数名,则 counter++;时间戳不太好,如果代码执行的快的话,那时间戳区分不开的
    ```javascript
    let s = 'ajaxCallback'+ window.counter;
    window.counter++;
    window[s]=(result)=>{
    // callback(result);

    };
    ```
    murmur
    murmur
    Apr 11, 2018
    8
    你都知道了 const 了 以前 es5 之前都在用的避免重名的方法不晓得么
    dcatfly
    dcatfly
    Apr 11, 2018
    9
    eslint 了解一下
    xianxiaobo
    xianxiaobo
    Apr 11, 2018
    10
    第一个函数名用 1,第二个用 2,第三个用 3,怎么会重名呢?
    jiangzhuo
    jiangzhuo
    Apr 11, 2018
    11
    不用使用函数名,所有调用此函数的地方都写个一模一样的函数
    chenalex
    chenalex
    Apr 11, 2018
    12
    "use strict"; 函数放对象里面调用,严格模式对象字面量重复属性名报错
    graysheeep
    graysheeep
    Apr 11, 2018
    13
    1、eslint
    2、模块化
    faceRollingKB
    faceRollingKB
    Apr 11, 2018
    14
    js 本身是动态语言,通常只有运行时才会报错
    所以你的需求应该是:有没有一款 IDE,可以在 js 代码运行之前就把运行时错误找报出来?
    SourceMan
    SourceMan
    Apr 11, 2018
    15
    模块化
    闭包
    wotemelon
    wotemelon
    Apr 11, 2018
    16
    @faceRollingKB eslint 了解一下
    Erskine
    Erskine
    Apr 11, 2018 via Android
    17
    匿名函数,全程不需要命名
    vevlins
    vevlins
    Apr 11, 2018
    18
    这个问题听起来很奇怪
    otakustay
    otakustay
    Apr 11, 2018
    19
    咱们……直接……用……模块化……不就……好……了……吗……
    fortunezhang
    fortunezhang
    Apr 11, 2018
    20
    我来一个,当时接了一个私活,是用 web 做报表。好多个页面;每个页面有 n 个弹窗,弹窗上,继续弹窗。好多功能类似。 然后我就是 function page_1_some_function(){} ,后来还被他们使用。
    h1367500190
    h1367500190
    Apr 11, 2018❤️1
    21
    @otakustay 感觉他之所以遇到这个问题就是因为没有模块化。。。
    xiaxiaokang
    xiaxiaokang
    Apr 11, 2018
    22
    能问出这问题多半还是初学!
    faceRollingKB
    faceRollingKB
    Apr 11, 2018❤️1
    23
    @wotemelon @wwjvtwoex
    看了下介绍,eslint 可以自定义一些规则,并在运行代码前根据这些规则去检查代码,确实可以解决很多常见的语法错误;
    此外,如果对自己的编码水平有自信的话,也可以使用一些编码规范避免变量名重复这种问题,比如不要把变量名暴露到全局,尽可能保持在模块内,如果要暴露到全局的话需要限制命名空间,类似的
    lozzow
    lozzow
    Apr 11, 2018 via Android
    24
    @rekulas 哈哈哈,我也是这么想的,哈哈哈
    tommyZZM
    tommyZZM
    Apr 15, 2018
    25
    有什么语言不会遇到这个(变量 /函数 /等字面量重名)问题?

    楼主你确定这个问题的范畴和 JS 函数有关?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4992 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 58ms · UTC 02:16 · PVG 10:16 · LAX 18:16 · JFK 21:16
    ♥ Do have faith in what you're doing.