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

为什么 es7 才提出"指数运算符", 难道之前 javascript 基本不需要指数运算么?

  •  
  •   yech1990 · 2015-12-22 15:35:16 +08:00 · 4141 次点击
    这是一个创建于 3055 天前的主题,其中的信息可能已经有所发展或是发生改变。

    没完整写过 javascript 的脚本, 今天看阮一峰的 es6 教程, 发现这么一句话:

    "es7.exponentiationOperator:指数运算符"

    之前 javascript 我是通过math.pow()来实现指数运算的, 为什么大部分语言都集成了指数运算符, 而 javascript 现在才提出, 是因为实际生产中基本用不着, 还是什么历史原因来的.

    21 条回复    2015-12-23 14:18:34 +08:00
    BOYPT
        1
    BOYPT  
       2015-12-22 15:39:11 +08:00
    C 语言也没有指数运算符啊
    yech1990
        2
    yech1990  
    OP
       2015-12-22 15:40:24 +08:00
    忘了加限制条件, "脚本语言...."

    crystom
        3
    crystom  
       2015-12-22 15:41:54 +08:00
    大部分语言都集成了指数运算符 请举例
    另外指数可以用对数换底来算
    yksoft1
        4
    yksoft1  
       2015-12-22 15:46:14 +08:00
    @BOYPT 但是 PC 用的 CRT 里一般都有软硬浮点库和 math.h
    yech1990
        5
    yech1990  
    OP
       2015-12-22 15:48:27 +08:00
    @crystom
    我就会这几个
    python
    2**3
    ---
    irb
    2**3
    ---
    R
    2^3
    ---
    perl
    2**3

    我就会这几个.... 其他的确实不清楚
    bramblex
        6
    bramblex  
       2015-12-22 15:50:11 +08:00
    为什么我觉得你应该没怎么写过代码呢? ╮(╯_╰)╭……
    yech1990
        7
    yech1990  
    OP
       2015-12-22 15:51:49 +08:00
    @bramblex 嗯 是哩
    呵呵
    chemzqm
        8
    chemzqm  
       2015-12-22 15:51:55 +08:00
    因为开始的时候设计 javascript 只不过是为了给页面加点效果罢了
    yech1990
        9
    yech1990  
    OP
       2015-12-22 15:55:43 +08:00
    @bramblex 看了一下你的 github 确实十分 diao.....
    相比我应该就是 hello world 的水平....
    BOYPT
        10
    BOYPT  
       2015-12-22 16:01:47 +08:00
    @yksoft1 然而依然没有运算符。
    bramblex
        11
    bramblex  
       2015-12-22 16:02:43 +08:00   ❤️ 1
    @yech1990
    不关这个事……中缀运算符在很多语言里面不过就是一个语法糖而已,加上并不难,甚至还有语言可以跟定义函数一样随意定义中缀运算符

    举个 Haskell 的例子
    a .!@#$%^&* b = a + b
    print (1 .!@#$%^&* 2)

    输出 3
    bramblex
        12
    bramblex  
       2015-12-22 16:07:30 +08:00
    @chemzqm 但是谁都没想到, JavaScript 现在变成了一门那么流行的编程语言……
    sengxian
        13
    sengxian  
       2015-12-22 18:14:49 +08:00
    我猜因为优先级的原因,所以没有加入。
    3 ^ 3 ^ 3 = ? (3 ^ 3) ^ 3 or 3 ^ (3 ^ 3)
    bramblex
        14
    bramblex  
       2015-12-22 18:32:39 +08:00
    @sengxian

    ……这个超简单啊,左结合啊。 3 ^ 3 ^ 3 -> (3 ^ 3) ^ 3
    sengxian
        15
    sengxian  
       2015-12-22 18:34:48 +08:00   ❤️ 1
    bramblex
        16
    bramblex  
       2015-12-22 18:37:31 +08:00
    @sengxian 那就默认右结合嘛……

    不过 js 好像没有右结合运算符……还是我大 Haskell 好
    Arthur2e5
        17
    Arthur2e5  
       2015-12-22 22:11:15 +08:00
    @yech1990 我讲一个冷门但是大家电脑上基本都有的: bash: echo $((2**32-1))

    * * *
    -其实是 ES7 什么都在问 Python 学吧?-
    msg7086
        18
    msg7086  
       2015-12-23 02:45:45 +08:00
    JS 本来也不是拿来充当全功能脚本语言用的。
    和 Py/Rb/Pl 的设计方向本来就不同。
    现在逐步进化的过程中才慢慢加入一些新的通用编程特性。
    arzusyume
        19
    arzusyume  
       2015-12-23 10:01:58 +08:00
    大概是因为^被占用了吧...
    yksoft1
        20
    yksoft1  
       2015-12-23 10:48:57 +08:00
    @BOYPT 因为数学库本来就不是基本功能。
    yulon
        21
    yulon  
       2015-12-23 14:18:34 +08:00
    应该是继承 C 系,指数运算本来就不是硬件指令而是软件实现的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1981 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 01:27 · PVG 09:27 · LAX 18:27 · JFK 21:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.