问老师一个关于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>
一般什么情况下,只需要传入一个函数名就行了
一般函数运行,不都是 【函数名(参数)】这样子的吗;
3回答
同学你好,关于同学的问题回答如下:
1、传一个函数名,是将这个函数整体都传递了进去,当执行到某个步骤时,再去执行这个函数,而不是立即调用。而传函数名()时,是直接调用这个函数。
2、在这个代码里面,toUpCase是作为回调函数被传入的:

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

不是会自动执行,而是在满足了某个条件以后才会去调用执行。
如果在后面加上了小括号:

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

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

当执行如下代码时:

是给document绑定点击事件,同时调用了click函数,然后将click函数调用的结果a返回出来,绑定在了document的点击事件上。
同学可以再理解下。重点是加了小括号会立马执行,而我们需不需要让其立即执行?还是需要达到某个条件再去执行。
如果我的回答帮助了你,欢迎采纳。祝学习愉快~
学习plus
提问者
2020-06-09


如果加上(),事件触发,就相当于运行click()(),对吗
学习plus
提问者
2020-06-09


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