V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
jkmf
V2EX  ›  JavaScript

number 转 string 问题

  •  
  •   jkmf · 2019-09-26 21:39:52 +08:00 · 3570 次点击
    这是一个创建于 1889 天前的主题,其中的信息可能已经有所发展或是发生改变。

    今天用 String()转换 number 类型,被 mentor 嫌弃了,说应该用+'',还说我没有好好看过犀牛书,特地把犀牛书翻出来看下了下,书上是下图这么写的。+''和 toString() String()没有本质区别吧,大家平时都是用哪种方式转换呀? http://ww1.sinaimg.cn/large/6fb6ba47ly1g7d8z512w9j20sa06qwh2.jpg

    25 条回复    2019-10-08 17:31:20 +08:00
    jkmf
        1
    jkmf  
    OP
       2019-09-26 21:43:50 +08:00
    kyuuseiryuu
        2
    kyuuseiryuu  
       2019-09-26 21:44:15 +08:00
    哦,我用 `${v}`
    Austaras
        3
    Austaras  
       2019-09-26 21:44:16 +08:00
    你们都错了,应该用 ES6 模板字符串
    B3C933r4qRb1HyrL
        4
    B3C933r4qRb1HyrL  
       2019-09-26 21:44:46 +08:00
    个人习惯是+'',没深究过。
    另外图片 403。
    shiny
        5
    shiny  
       2019-09-26 21:47:56 +08:00
    尽量用可读性更好的方式来写。
    Rwing
        6
    Rwing  
       2019-09-26 21:48:20 +08:00
    你们 mentor 扯淡,String()的语义更明确,+'' 这种奇技淫巧少用
    LittleWhiteMouse
        7
    LittleWhiteMouse  
       2019-09-26 21:49:26 +08:00
    写的清清楚楚明明白白,等价,这还有什么可鄙视的,随便开心用哪个喽。

    我倒是为了便于阅读,用 String() 较多,有点拿代码当注释用的意思。简短有简短的好处,毕竟文件体积小;但是我想自己回头检查代码的时候轻松些……
    sunjourney
        8
    sunjourney  
       2019-09-26 22:11:33 +08:00
    toString() 更加通用,我是说换了语言也有差不多的库函数
    iMusic
        9
    iMusic  
       2019-09-26 22:14:20 +08:00
    我一般是'' +
    DOLLOR
        10
    DOLLOR  
       2019-09-26 22:26:50 +08:00
    单一转换操作,用+''没问题,但是,如果是链式操作,后期维护可能会坑自己。
    learnshare
        11
    learnshare  
       2019-09-26 22:28:29 +08:00
    + '' 没问题,但理解类型的时候得费脑子
    toString 挺好的
    Cbdy
        12
    Cbdy  
       2019-09-26 22:56:46 +08:00
    用 String()是最妥当的,用+''不够语意化(实际是隐式转型的滥用),用 toString()有空指针问题
    Elethom
        13
    Elethom  
       2019-09-26 22:59:04 +08:00 via iPhone
    在我们团队要是敢这么写,自动化工具直接就禁止你 commit。
    zhw2590582
        14
    zhw2590582  
       2019-09-26 23:08:17 +08:00 via iPhone
    好多流行的 eslint 扩展配置,都提示用 String(),说明它更好
    yulon
        15
    yulon  
       2019-09-27 08:12:22 +08:00
    不管从语义还是从效率都是弱智行为
    shintendo
        16
    shintendo  
       2019-09-27 09:07:18 +08:00
    用 String()最好,语义明确
    另外不要用 toString
    Jrue0011
        17
    Jrue0011  
       2019-09-27 11:21:58 +08:00
    用"" + number 的话,是不是会创建一个 StringBuilder 对象,然后再 append(String.valueOf(number))?
    Jrue0011
        18
    Jrue0011  
       2019-09-27 11:26:05 +08:00
    @Jrue0011 我错了,我一开始以为是 java。。。。。
    SoloCompany
        19
    SoloCompany  
       2019-09-27 13:53:19 +08:00
    模版字符串是最优解
    renmu123
        20
    renmu123  
       2019-09-27 15:50:04 +08:00
    显式优于隐式
    gromit1337
        21
    gromit1337  
       2019-09-28 14:42:07 +08:00
    @SoloCompany #19 具体怎么转换? google 没有找到
    jinwyp
        22
    jinwyp  
       2019-09-28 16:25:40 +08:00
    为什么不用 toString() 面向对象应该都用.语法才对啊.
    ochatokori
        23
    ochatokori  
       2019-09-28 18:39:52 +08:00 via Android
    String()
    因为和 Number()风格相同比较好看
    jkmf
        24
    jkmf  
    OP
       2019-09-28 19:16:54 +08:00
    @gromit1337 你搜下 ES6 里面有
    hoythan
        25
    hoythan  
       2019-10-08 17:31:20 +08:00
    @Rwing + 是毛奇技淫巧啊,从 js 一开始 1.0 版本就已经存在了好吗。
    真的懂 js 吗?
    另外 google 写的 js 代码里能搜出一堆+
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1052 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 22:10 · PVG 06:10 · LAX 14:10 · JFK 17:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.