春節
快樂

花潮论坛

搜索
热搜: 活动 交友 discuz
查看: 11|回复: 0

JS : 'a' ** 0 = 1

[复制链接]
  • TA的每日心情
    奋斗
    2026-3-8 07:56
  • 签到天数: 1753 天

    [LV.Master]伴坛终老

    3137

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

    发表于 2026-3-8 08:23 | 显示全部楼层 |阅读模式

    请马上登录,朋友们都在花潮里等着你哦:)

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x

    先看看JS运算式子 ——

    'a' ** 0 = 1

    'a' ** 0 = 1 这样的计算式子并不符合数学约定,但在 JS 中可以正常进行计算,答案为 1 。式子中, 'a' 是一个字符,可以是别的任意字符,例如 '我'得瑟Let it go 等等都行; ** 是指数运算符,例如求 x 的 y 次方写成 x ** y,等价于 JS 的 Math 方法 Math.pow(x, y)0 在式子中是次方的意思。

    console.log('a' ** 0); // → 1
    console.log(Math.pow('a', 0)); // → 1

    从数学的角度出发,任何非0的数的0次方都等于 1 。上述式子中的 'a'不是数字,理论上不能参与运算,在 JS 中则可以,因为 JS 的数据类型是动态类型即 Dynamically Typed,因此字符串参与数学运算时 JS 一样正常执行:

    console.log('2px' - 10); // → NaN

    NaN 是一个特殊的数字类型,意为 Not a number,不是一个数字。不是一个数字但属于数字类型,特殊的,于是字符串就可以堂而皇之地参与数学运算。

    number 类型代表整数和浮点数,介于 -(25 3-1) ~ (25 3-1) 之间,超出这个范围的数字可以使用后来增加的 BigInt 类型表示以追求运算的精准度(IE不支持)。

    求字符串的0次方其实是求 NaN 这个特殊数字的零次方。在JS中,特殊数字还有一个 Infinity,无穷大 ∞。NaN 和 Infinity 既然都是数字,那么,它们的0次方当然就是 1,这时 JS 的运算逻辑。

    无穷大怎么来?

    console.log(1 / 0); //→ Infinity

    钱不多没有关系,只要是大于0的任意数字,如果0个人平分,你就是比亿万富翁还厉害的主。但千万别小于0,否则你将比亿万负翁要惨到无法形容。0除以0这事别干,NaN 是唯一答案,NAN 这货是一个特殊的数字且具有粘连性,求其0次方你会拿到1块大洋,然而其它任何运算都是 NaN,很遗憾特殊数字不意味着是天文数字。

    最后出个题:执行语句 console.log(0 ** 0); 得到什么?

    【提示】在数学中,由于诸多原因,0的0次方未被统一定义。但是,JS老哥是个狠人,为了保持运算一致性,为了遵循 IEEE 754 标准的相关约定……

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    小黑屋|手机版|Archiver|服务支持:DZ动力|huachaowang.com Inc. ( 蜀ICP备17032287号-1 )

    GMT+8, 2026-3-8 12:40 , Processed in 0.058461 second(s), 25 queries .

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表