请马上登录,朋友们都在花潮里等着你哦:)
您需要 登录 才可以下载或查看,没有账号?立即注册
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 标准的相关约定……
|