问老师一个关于replace方法中,函数作为参数的问题

来源:4-3 转驼峰

学习plus

2020-06-09 19:42:42

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script type="text/javascript">
/*var str = '   as  d    ';
function trim(str){
return str.replace(/^\s+/,'').replace(/\s+$/,'');
}
console.log(trim(str));*/

var str = 'font-size';
var pattern =/-([a-z])/g;
var pattern2 =/-/;

/*console.log(str.replace(pattern,function(all,letter){
console.log(all);
return letter.toUpperCase();
}));*/
function toUpCase(all,letter){
return letter.toUpperCase();
}
console.log(str.replace(pattern,toUpCase));
</script>
</body>
</html>

http://img.mukewang.com/climg/5edf74fd09cdd8f606150122.jpg

一般什么情况下,只需要传入一个函数名就行了

一般函数运行,不都是 【函数名(参数)】这样子的吗;

写回答

3回答

好帮手慕粉

2020-06-10

同学你好,关于同学的问题回答如下:

1、传一个函数名,是将这个函数整体都传递了进去,当执行到某个步骤时,再去执行这个函数,而不是立即调用。而传函数名()时,是直接调用这个函数。

2、在这个代码里面,toUpCase是作为回调函数被传入的:

http://img.mukewang.com/climg/5ee043d909cfb81d08020147.jpg

3、下面的这个理解是不准确的:

http://img.mukewang.com/climg/5ee0461b09d40e0108210083.jpg

不是会自动执行,而是在满足了某个条件以后才会去调用执行。

如果在后面加上了小括号:

http://img.mukewang.com/climg/5ee046b209ad89a805210128.jpg

那么在压面刚打开时,就会弹出1,而不是在点击页面以后弹出:

http://img.mukewang.com/climg/5ee046c50926cfc804520124.jpg

这是因为,当加了小括号以后,在给document绑定点击事件时,就会立马执行click函数。而不加括号时,会先将click函数绑定在document的点击事件上,当点击以后才会去执行这个click函数。

4、这个的理解也是不准确的:

http://img.mukewang.com/climg/5ee0465609ec1aa807520551.jpg

当执行如下代码时:

http://img.mukewang.com/climg/5ee04855092f2bf505970239.jpg

是给document绑定点击事件,同时调用了click函数,然后将click函数调用的结果a返回出来,绑定在了document的点击事件上。

同学可以再理解下。重点是加了小括号会立马执行,而我们需不需要让其立即执行?还是需要达到某个条件再去执行。

如果我的回答帮助了你,欢迎采纳。祝学习愉快~

0

学习plus

提问者

2020-06-09

http://img.mukewang.com/climg/5edf783509b328da03710212.jpg

http://img.mukewang.com/climg/5edf783c0988f28906120276.jpg

如果加上(),事件触发,就相当于运行click()(),对吗

0

学习plus

提问者

2020-06-09

http://img.mukewang.com/climg/5edf7601092478dd03400126.jpg

http://img.mukewang.com/climg/5edf7771091d834802430180.jpg

类似的还有点击事件,间歇调用等,是因为这些如果传入函数,都是会自动执行的,所以不需要加()来手动执行吗?

0

0 学习 · 14456 问题

查看课程