JQ的$.attr("value",value)和$.val(value)有区别吗

做了一个点击按钮加一的功能,可是我发现
$("#plus").click(function(){$("#num").val(parseInt($("#num").val())+1);});
这样写虽然input上显示的值增加了,可是value属性还是保持不变一直是0
然而下面这样写,value值也会跟着变
$("#plus").click(function(){$("#num").attr("value",parseInt($("#num").val())+1);});
我能理解为val()只改变表面值,而attr能改变属性值?

$.attr("value",value) 修改的是标记,就是初值
$.val(value) 修改的是值域,就是用户可交互改变的

attr改变的是attributes中的属性值
val改变的是外部的value值。