JavaScript中函数对象与函数有什么区别?

如图一代码如果//注册提示信息我写成①document.getElementById("password").onblur=checkPassword;则页面如图二显示,... 如图一代码
如果//注册提示信息我写成
①document.getElementById("password").onblur = checkPassword;则页面如图二显示,必须要点击一下密码输入框再点击其他地方,密码格式的提示才会显示。
而如果//注册提示信息我写
②document.getElementById("password").onblur = checkPassword();
则页面如图三显示,一刷新页面密码格式的提示就显示出来了,还没点击就已经触发了onblur事件。
求教:①和②这两行代码有什么区别?加()与不加()区别是什么?这两行代码分别是怎么运行的?
展开
 我来答
仰斯琪0hL
2019-09-02 · 超过19用户采纳过TA的回答
知道答主
回答量:37
采纳率:60%
帮助的人:9.3万
展开全部
在js中对象就是神一般的存在,什么都是对象,你就这么理解好了。

函数是用来实现具体功能的代码,用一种方式把他们组织起来,就是函数了。

对象是有属性和方法的一个东西,在对象中的函数就变成了方法。

刚学习js不用太纠结这些概念性的东西吧。慢慢用多了就自然而然熟悉了。

我相信现在写的再详细你也未必能全搞明白。有些东西你现在不明白只是因为你还没到明白它的时候,时间会证明一切的。加油。
wu_better
2019-09-02 · 超过25用户采纳过TA的回答
知道答主
回答量:69
采纳率:100%
帮助的人:36.2万
展开全部
1:onblur 的值是一个监听函数,函数 函数 重要的事说三遍,当文本框失去焦点时会触发这个函数的调用
2.对于②行 :由于js代码是从上而下的执行 到达这一行 你来一个checkPassword() 这是一个函数的调用 也就是 页面一刷新 就会立即执行这个函数 因为加了"()" 所以就会出现立即验证的效果,函数执行完成 会有一个返回值(return 的值 ,如果函数体内不显式的返回 默认就返回 undefined) 这个时候 你② 的代码 就相当于
var checkRusult = checkPassword();
根据题主截图 返回的是一个布尔值
document.getElementById("password").onblur =checkRusult //true or false
导致的效果就是 页面刷新立马进行验证,然后你之后再失去焦点什么的 不会有任何效果
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fuyh16
2019-09-03 · TA获得超过222个赞
知道小有建树答主
回答量:462
采纳率:82%
帮助的人:119万
展开全部
题目与问题内容,有一些差异。
document.getElementById("password").onblur = checkPassword;
上面的这句话的意思是,给password这个元素的onblur事件,添加一个函数,鼠标在离开元素时就会调用执行checkPassword函数。一般来说,验证密码规则函数的调用,都是用这种方法,就是说用户在输入完密码之后,才会去校验密码格式是否有问题。而你后面的写法:
document.getElementById("password").onblur = checkPassword()
这句话是说,给元素的onblur事件添加一个函数,如果你的checkPasswrod返回的是一个函数对象,则会添加成功,否则只会先运行一遍checkPassword函数,给你的password元素的值进行一遍校验,因为此时password值为空,所以校验结果是不符合,就会在passwrod后面出现提示,但是鼠标移入password再移出,并不会触发校验函数,并不符合实际的校验场景。
综上,在代码中出现函数体时,一般用法就是给某个事件绑定某个函数,比如你的第一种写法,只有在真正触发的这个事件时,函数才会运行;在代码中出现函数体后面加(),就是要运行该函数,至于函数运行之后会发生什么,情况就太复杂了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
无野楼升域醉0t
2019-09-03 · TA获得超过8552个赞
知道小有建树答主
回答量:1498
采纳率:88%
帮助的人:502万
展开全部
引擎会优先加载函数 变量方式声明的 会按顺序加载 。其他没区别。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jyvngshjj
2019-09-03 · 超过41用户采纳过TA的回答
知道小有建树答主
回答量:101
采纳率:33%
帮助的人:19.2万
展开全部
②document.getElementById("password").onblur = checkPassword();
当你的代码解析到这一行的时候不会直接执行checkPassword()函数.
①document.getElementById("password").onblur = checkPassword;
是给password绑定了失去焦点事件,在密码框失去焦点才会触发并执行checkPassword()函数.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式