神奇的Javascript

本文深入探讨了JavaScript中的数据类型转换、整数与小数的精度限制、特殊数值如NaN的处理方式,以及数学对象Math的使用技巧。通过具体实例,揭示了JS中常见的运算误区与解决策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

>typeof  NaN
<"number"
//not a number,但它是number type的,NaN 的检测 isNaN。
>9999999999999999
<10000000000000000
//js整数精度15位
>0.5 + 0.1 == 0.6
<true
//小数精度17位
>0.1 + 0.2 == 0.3
<false
//0.1+0.2值为0.30000000000000004.永远不要测定某个特点的浮点数值
//可以通过乘以10或除以10来计算: 0.3
>Math.max()
<-Infinity
// max 是 Math 的静态方法,返回给定的一组数字中的最大值。
// 如果没有参数,结果为[`-bInfinity`]
// 如果给定的参数中至少有一个参数无法被转换成数字,则会返回 [`NaN`]
>Math.min()
<Infinity
// min 是 Math 的静态方法,返回给定的一组数字中的最大值。
// 如果没有参数,结果为[`Infinity`]
// 如果给定的参数中至少有一个参数无法被转换成数字,则会返回 [`NaN`]
>[] + []
<""
//+中空数组转为空字符串,
//在-,*运算中[]被转化为0
>[] + {}
<"[object object]"

>{} + []
<0

>true + true + true === 3
<true

>true - true
<0

>true == 1
<true

>true === 1
>false

>(!+[]+[]+![]).length
<9
//我也看不懂,js是门玄学
>9+"1"
<"91"

>91-"1"
<90

>[] == 0
<true

###在JavaScript中,加法的规则其实很简单,只有两种情况:你只能把数字和数字相加,或者字符串和字符串相加,所有其他类型的值都会被自动转换成这两种类型的值.

2-1
2-2
2-3

参考文章:https://segmentfault.com/a/1190000008038678
参考文章:https://github.com/jawil/blog/issues/1
原文链接:yinzhuo.online

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值