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

来源:互联网 发布:matlab 类似ga算法的 编辑:程序博客网 时间:2024/04/30 23:59

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


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.正则表达式中的?=

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


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

原创粉丝点击