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

如何防止 JS 函数重名 ?

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

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

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

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

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

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

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