javascript 方法实现千位分隔符以及代码解释

做题目遇到这个问题,对于其中正则实现的方法,对于疑惑点进行了注释,共三点。


1.为什么使用toString

2. strObj.indexOf()=-1代表什么

3.stringObj.replace(regExp,function($0,$1))的$0$1是什么?

4.return num&&()是什么?

5.正则表达式中的?=

一个源码:js正则式实现千位分隔符

function ce(num) {
     return num && 
           (num .toString().indexOf('.') != -1 
                 ?
           num.toString().replace(/(\d)(?=(\d{3})+\.)/g, function($0, $1) {return $1 + ",";}) 
                :
           num.toString().replace(/(\d)(?=(\d{3}))/g, function($0, $1) {return $1 + ",";}));
}
console.log(ce(1353400.23));

1.为什么使用toString

      replace() index()方法是对字符串对象进行操作

2. strObj.indexOf()=-1

     代表strObj找不到str

3.stringObj.replace(regExp,function($0,$1))的$0$1是什么?

   ①stringObj.replace(regExp,function($0,$1))此处的$0 $1与strObj.replace(regExp,$0,$1)不同.

   ②strObj.replace(regExp,$1)直接以字符串代替符合regExp的字符串,$1-$99 代表符合第n个子表达式的字符串,以左括号作为区分,第一个左括号以内的为$1。

   ③stringObj.replace(regExp,function()) function中含四个参数,可以写作任意的符号,此时$0 $1只表示参数的位置,具体用法为:(参考链接:replace(regExp,function)用法/示例 replace(regExp,function)用法/示例

       function(A,B,C,D)A 匹配完整模式的字符串   B 从完整模式的字符串中匹配子模式的字符串   C 完整模式时的字符位置,从零开始    D 被搜索的字符串本身

      例子:

        name = 'aaa bbb ccc abc';  
 
        uw=name.replace(/\b\w+\b( ab)/g, function($0,$1,$2,$3){  
        console.log('|'+$0+'|'+$1+'|'+$2+','+$3);  
}  
    );  

        将会显示下面的结果
        |ccc ab| ab|8,aaa bbb ccc abc

4.return num&&()是什么?

     参考链接:逻辑与逻辑或的短路原理

逻辑或短路原理

(1) 只要“||”前面为false,不管“||”后面是true还是false,都返回“||”后面的值。
(2) 只要“||”前面为true,不管“||”后面是true还是false,都返回“||”前面的值。


逻辑与短路原理

(1) 只要“&&”前面是false,无论“&&”后面是true还是false,结果都将返“&&”前面的值;
(2) 只要“&&”前面是true,无论“&&”后面是true还是false,结果都将返“&&”后面的值;

示例一:这里顺便提下:经常有人问我,看到很多代码if(!!attr),为什么不直接写if(attr);其实这是一种更严谨的写法:

                 请测试 typeof 5和typeof !!5的区别。

                 !!的作用是把一个其他类型的变量转成的bool类型。

示例二: callback&&callback()

                   在回调中,经常这么写,更严谨,先判断 callback 是不是存在,如果存在就执行,这样写的目的是为了防止报错。

                  如果直接写 callback(); 当callback不存在时代码就会报错。

5.正则表达式中的?=

此代码中,含义为可以匹配?=之后的模式但只返回?=之前的内容。


是断言的一种,具体的断言参考链接:正则表达式分组、断言详解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

picoasis

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值