白话解释下这段js代码,关于replace

var str = "sdf\n\t1";
str = str.replace(/\n|\r|\t/g, function(ch) {
switch (ch) {
case "\n": return "\\n";
case "\r": return "";
case "\t": return "\\t";
}
});
=>正则我看的懂,关键是replace的第二个参数,是个匿名function。那个匿名function(ch)参数ch,为什么会是 前面正则的字符(!!主要解释这个匿名函数及其参数!!)
function (ch) 这个ch参数是怎么传进来滴。

开心每一天1111
浏览 160回答 3
3回答

拉丁的传说

我的理解是:如果str符合/\n|\r|\t/g 这个匹配要求,则进入function也就是说如果str.match(/\n|\r|\t/g)!=null 就将str.match(/\n|\r|\t/g)传入fuction所以那个ch=str.match(/\n|\r|\t/g)然后把替换后的ch再放回去,这个就不是match的功能而是replace的功能了

慕丝7291255

ch,或者word都可以……首先我们来了解下基本的语法:string.replace(regexp, replacement)regexp :您要执行替换操作的正则表达式,如果传入的是一个字符串,那就会当作普通字符来处理,并且只会执行一次替换操作;如果是正则表达式,并且带有 global (g) 修饰符,则会替换所有出现的目标字符,否则,将只执行一次替换操作。replacement :您要替换成的字符。返回值是执行替换操作后的字符串。下面用几个例子来详细的说明下:1、String.replace( ) 替换所有出现的目标字符Code:var text= "javascript 非常强大 !JAVASCRIPT 是我最喜欢的一门语言 !";text.replace(/javascript/ig, "JavaScript");// 返回:JavaScript 非常强大 !JavaScript 是我最喜欢的一门语言 !2、String.replace( ) 实现调换位置Code:var name= "aaaa, bbcc";name.replace(/(\w+)\s*,\s*(\w+)/, "$2 $1");// 返回:bbcc aaaa3、String.replace( ) 实现将所有双引号包含的字符替换成中括号包含的字符Code:var text = '"JavaScript" 非常强大!';text.replace(/"([^"]*)"/g, "[$1]");// 返回:[JavaScript] 非常强大!4、String.replace( ) 将所有字符首字母大写Code:var text = 'a journey of a thousand miles begins with single step.';text.replace(/\b\w+\b/g, function(word) {return word.substring(0,1).toUpperCase( ) +word.substring(1);});// 返回:A Journey Of A Thousand Miles Begins With Single Step.

鸿蒙传说

var str = "sdf\n\t1";alert(str);str = str.replace(/\n|\r|\t/g, function(ch) {switch (ch) {case "\n": return "\\n";case "\r": return "";case "\t": return "\\t";}});alert(str);在执行前,执行后分别alert一下就知道什么意思啦\n\r\t都是转义字符\n 换行\r 返回\t 制表
打开App,查看更多内容
随时随地看视频慕课网APP