javascript小知识

缘起


一直以来,我都想写点偏的,但是能应用在实践中的js知识,今天终于有点时间造福大家了,请耐心阅读!

知识点总结


  • ~
  • |
  • parseInt
  • ‘2,3’ == [2, 3]

~


~这个也叫做补位符号,也就是把二进制进行补位的,大家知道计算机底层是二进制的吧,说白了就是十进制和二进制按照一定规则互相转换罢了:

  • 第 1 步:把运算数转换为 32 位的二进制整数。
  • 第 2 步:逐位进行取反操作。
  • 第 3 步:把二进制反码转换为十进制浮点数。

上面的方法可能有点复杂,说白了就是十进制取反减一,看看实例:
~-1 是0
~1 是 -2

上面这些大家可能觉得有点空泛,那么给大家个实际应用场景,其实场景很多,看大家是不是思考

~stringObject.indexOf(searchvalue,fromindex)
if(~'abc'. indexOf('a')) // true
if(~'abc'. indexOf('ae)) //false

上面的例子就是用于indexOf判断,和if结合使用,第二个例子就是取整

~~2 //2
~~1.6 //1
~~-1.6 //-1

|


|这个是位运算符,我们称之为位或,这里直接说个应用,取整

6 | 0  //6
6.6 | 0 //6
-6.6 | 0 -6

取整的方法是不是又多了一种,哈哈哈

parseInt


今天是parseInt有点野,上面已经有2种方法取整了,今天来个扩展,先看w3c的介绍

// parseInt(string, radix)
@ string 必须。要被解析的字符串。
@ radix 可选。表示要解析的数字的基数。该值介于 2 ~ 36 之间。
如果省略该参数或其值为 0,则数字将以 10 为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数。
如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。

接下来看题,哈哈

parseInt('j1', 20)  //381
parseInt( "0x101"); //257
parseInt( "115", 2 ); //3

下面小编为大家一一解析:
parseInt(‘j1’, 20) 中j在a-z中排位10,0-9有10个数字,按照顺序0-9a-z,代表10进制,那么j其实就是数字19,我们看radix,radix是20正好不超出19(因为0-19)包含0,最后的值就是19*20+1=381,也就是说
radix范围是0-9和a-z的个数之和 ,即36

parseInt('j1', 19)  //NaN
parseInt('j1', 21) // 21 *19 + 1 = 400
parseInt('j1', 36)// 36*19 + 1 = 685
parseInt('j1', 37) // NaN
parseInt('j1', 2) //NaN 因为radix必须大于j,即大于19

下面我们来解释parseInt( “0x101”),这个其实0x开头的是16进制,也就是转换后就是parseInt( “101”, 16),也就是16161+0*16+1 = 257

parseInt('jj1', 20)  //20*20*19+20*19+1=7981

最后我们来看parseInt( “115”, 2 ),这个其实是string先进行了一次转换,115在二进制中只解析前面的11,也就是parseInt( “11”, 2 ),那么结果就是2*1+1=3

···
parseInt( “151”, 2 ) //1
parseInt( “1115”, 2 ) //7
···

‘2,3’ == [2, 3]


这个就涉及到隐式转换了,==左右会发生转换,[2,3]正好转成字符串,所以相等了,这里主要是判断条件避坑

尾声


美好的时光总是短暂的,今天的小知识科普就到这里,我们下次见!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值