函数调用行为
Function call behavior
本文关键字:函数调用 更新时间:2023-09-26
在我的测试中,mylog
函数被调用了三次,但从源代码来看,我认为它应该只执行两次。
<html>
<div id='log'></div>
<script>
var Foo = { counter : "inside the Foo object" };
var counter = "Global";
Foo.method = function() {
var counter = "inside Foo.method";
mylog("counter = "+this.counter);
function test() {
// this is set to the global object
mylog("counter = "+this.counter);
}
test();
}
Foo.method();
function mylog(msg) {
log = document.getElementById("log");
log.innerHTML += log.innerHTML + msg + "<br />";
}
</script>
</html>
http://jsfiddle.net/8BBF7/
这是输出:
counter = inside the Foo object
counter = inside the Foo object
counter = Global
正如我所知,mylog
函数只被调用了两次。有人能解释一下为什么会发生这种事吗?
只需在log.innerHTML += log.innerHTML + msg + "<br />";
行将+=
更改为=
,或者保留它并使用形式log.innerHTML += msg + "<br />";
那是因为这个
log.innerHTML += log.innerHTML + msg + "<br />";
您还添加了当前的innerHTML,因此可以复制以前的日志。像这个吗
log.innerHTML += msg + "<br />";
或
log.innerHTML = log.innerHTML + msg + "<br />";
函数被调用了两次,但在附加日志时出错了。内部HTML。您将log.innerHTML附加两次
工作代码:
function mylog(msg) {
log = document.getElementById("log");
log.innerHTML += msg + "<br />";
}
请参阅http://jsfiddle.net/8BBF7/16/
它只被调用了两次。检查您的mylog()
:
function mylog(msg) {
log = document.getElementById("log");
log.innerHTML += log.innerHTML + msg + "<br />";
}
要么使用
log.innerHTML = log.innerHTML + msg + "<br />";
或
log.innerHTML += msg + "<br />";
相关文章:
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 在输入字段上有两个函数调用,一个在Blur上,一个不在Angular中
- 如何在Javascript函数调用中循环变量
- Javascript:应为赋值或函数调用,但实际看到的却是表达式
- 如何远程检查JavaScript应用程序的函数调用堆栈
- javascript函数调用不起作用
- 为什么这个函数调用会破坏程序并导致未定义的变量
- 如何通过函数调用设置图像的src
- 从全局函数调用Ember控制器上的方法
- 为什么Jquery$.ajax在函数调用中触发所有statusCode,即使调用成功
- JavaScript函数调用(arg1)(arg2)
- 打印链接时,将javascript函数调用到链接中
- 在函数调用中封装数据除了隐藏数据之外还有什么优点
- 无法从JavaScript中的函数调用对象属性
- 对中的函数调用进行排序是回调的唯一方法
- 函数调用方法有什么用
- Javascript:JSHint:应为赋值或函数调用,但实际看到的却是表达式
- HTML5(Bootstrap)通过函数调用运行动画
- 函数调用不起作用
- 函数中的Javascript函数调用