javascript return写在调用里是用来接收函数的返回值。我傻了??什么鬼

javascript
前面在script元素中定义了一个vaildata函数
而后在表单元素中有一句
onsubmit="return vaildate(this)"
书上说这个return是用来接收validate()的返回值。我傻了??什么鬼

onsubmit="return vaildate(this)" 这个的意思就是如果vaildate的返回值是true(或者是任何非零值、非空值),则提交表单,否则就不提交追问

朋友,我有点不理解,return不是在跳转里面里用来返回值的吗,这里没有跳转用return怎么解释呢?

追答

onsubmit这个事件发生在表单即将提交的时候,这时候就会自动执行引号里面的js代码,如果代码的执行结果是true(这是默认值),那么表单就继续提交,如果返回值是false,那么表单就立即终止提交。我已经解释的很清楚了,不知道你究竟哪儿不理解。return的意思就是返回值啊,至于你说的跳转究竟是何所指,我反而不明白了。

追问

朋友,我不明白的retrun不是用来做类似于汇编里的mov指令吗将一个值传给一个寄存器或者变量吗
所以看了你的回答,我猜测这里的return是将函数返回的值又传给了事件onsubmit作为参数做分支的判断(是否提交表单)。
但如果这么说的话在onsubmit="retrun vaildata()"语句里,这个onsubmit又隐藏着一个类似if判断的一个函数。
是这样吗,还有多谢兄台的回答。

追答

return与汇编里的mov指令不存在相似性。
onsubmit=""这引号里本身就是一个函数体的代码,而函数结束时用一个return给函数的调用者(也就是表单)返回一个值,这本来就是一个标准的日常操作啊!其实你可以把vaildata中的代码全都放到这个引号里面去,一样可以运行的,比如:

onsubmit="if(username.value==''){alert('请输入用户名');return false;}else{return true;}"
这样是不是能帮助你理解?retrun vaildata()只不过是把要执行的代码都放到vaildata函数里了,然后这里再把vaildata的执行结果返回给onsubmit而已,就相当于多转了一次手。

追问

大多我都明白了,但是如果这个retrun是将值传给表单的话,怎么通过传过去的布尔值来判断是否提交表单呢?
所以我还是猜测retrun是传给某个判断用途的函数做参数了

温馨提示:答案为网友推荐,仅供参考
相似回答