javascript - 将函数视为值时是否会忽略 DOM 命令?

标签 javascript function dom

总体而言,我对 JS 和编程还很陌生。我随便自学,只是为了好玩!看看这个:

var a=0;
var b=0;

function test(){
  a++;
  b++;
  document.body.innerHTML+=a+" "+b;
  return 42;
}

$("document").ready(function(){
  test();
});

这(如预期的那样)打印出来

1 1

当你刚刚运行函数时,返回值似乎毫无意义。另一方面,如果我将其修改为...

$("document").ready(function(){
  document.body.innerHTML+=test()+" "+a+" "+b;
});

打印出来:

42 1 1

这意味着“var a”递增,“var b”递增,42 作为 test() 的值返回,但 test() 的 DOM 部分被忽略。 为什么是这样?还有什么被忽略了吗? 谢谢。

最佳答案

这真的归结为 += 是什么意思?

x += y;
// same as
x = x + y;

所以

document.body.innerHTML += test() + " " + a + " " + b;
// same as 
document.body.innerHTML = document.body.innerHTML + test() + " " + a + " " + b;
//               X                         Y

现在您可以看到,document.body.innerHTML Y test() 更改之前被采用,所以在 test 中所做的更改不在 Y 中。

关于javascript - 将函数视为值时是否会忽略 DOM 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22283047/

相关文章:

python : Function which works on initial/default values if no parameters are passed

javascript - 从页面中的所有文本中删除背景颜色,无论我们是否有选择

javascript - 如何响应某个区域外的点击?

dom - 通过 gwt 中的 id 获取小部件

javascript - 如何为使用jquery动态生成的按钮提供唯一的id

javascript - jQuery .post() 未触发成功处理程序方法

javascript - jQuery 设置 cookie 到 post 方法

php - Wordpress 自定义摘录添加类

Javascript 和 Firebase 3 - 使用电子邮件和密码创建用户

javascript - 事件监听器在 javascript 中无法正常工作