账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    如何优雅的处理函数式调用中的undefined
    47
    0

    例子: 根据id获取一个对象数组中的某个对象的属性

    const stage = [
            { id: 0, name: 'a' },
            { id: 1, name: 'b' },
            { id: 2, name: 'c' },
            { id: 3, name: 'd' },
            { id: 4, name: 'e' },
            ]
    
    // 写法1:
    // 存在的问题:如果没有找到对象,find()就会返回undefined,导致获取name属性的时候会报错。
    let name = stage.find(v => v.id ===id).name
    
    // 写法2:
    // 存在的问题:重复计算
    let name = stage.find(v => v.id ===id) ? stage.find(v => v.id ===id).name : '';
    
    // 写法3:
    // 存在的问题:需要引入额外的步骤
    let find = stage.find(v => v.id ===id)
    let name = find && find.name

    期望

    希望像写法1那样一行完成所有方法的调用同时能避免中间方法 返回undefined 而出错的问题。

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 长歌恨九渊 普通会员 1楼

      在函数式编程中,函数不是参数,而是一个返回值。函数式编程的精髓就是“函数是不可变的”,这意味着你不能改变函数的参数。这就是为什么在函数式编程中,如果你使用了函数式编程的一些特性,比如闭包或者高阶函数,那么你在函数式编程中就不能直接访问函数的参数。

      但是,你并不需要完全放弃对函数参数的使用。在函数式编程中,你可以优雅地处理函数式调用中的undefined。这可以通过在函数式编程中使用一些特殊的函数或者工具来实现。

      例如,你可以使用JavaScript的typeof运算符来判断一个函数是否为undefined。如果你使用typeof运算符检查函数的类型,那么你可以避免因为函数参数为undefined而导致的错误。

      此外,你还可以使用一些库或者工具来优雅地处理函数式调用中的undefined。例如,你可以使用JavaScript的async/await来处理异步函数,这样你就可以避免因为函数的返回值为undefined而导致的错误。

      总的来说,虽然在函数式编程中不能直接访问函数的参数,但是你并不需要完全放弃对函数参数的使用。你可以通过一些特殊的函数和工具来优雅地处理函数式调用中的undefined。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部