首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JavaScript中"return"语句的奇怪行为

在JavaScript中,"return"语句用于从函数中返回一个值,并且它会导致函数立即停止执行。"return"语句的行为可能会在某些情况下看起来有些奇怪,但这是因为JavaScript的函数调用和执行上下文的特性。

首先,如果在函数中使用了"return"语句,但没有指定返回值,那么函数将返回一个"undefined"值。如果在函数中没有使用"return"语句,那么函数将默认返回一个"undefined"值。

其次,如果在一个函数中使用了多个"return"语句,那么只有第一个"return"语句会被执行。这是因为当函数遇到第一个"return"语句时,它会立即停止执行,并返回指定的值。

最后,如果在一个异步函数中使用"return"语句,那么它将返回一个Promise对象,该对象将在函数完成执行时解析为返回的值。

总之,JavaScript中的"return"语句可能会有一些奇怪的行为,但这些行为都是由于JavaScript的特性而导致的。为了避免这些问题,可以确保在使用"return"语句时明确指定返回值,并且避免在同一个函数中使用多个"return"语句。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Javascript中的Return,Return false和Return true

Javascript的返回值 Javascript中的返回值总共分为四类: return; return false; return true; return variable(变量); 这四种返回值其实有很大的不同...i为匿名函数function(){return;}的返回值,注意:在Javascript中函数都有返回值,默认的函数返回值为undefined。...从代码输出结果可以看出,return;的主要作用是阻止函数继续执行,直接返回undefined。 注:在Javascript中undefined == null,注意==与===的区别。...Javascript中true == 1,true == '1',正常情况下,return true是返回一个布尔值,也可以阻止函数继续执行。...5. return variable return variable主要是在Javascript中定义一个变量,在函数中进行返回,与通常的返回变量没有区别。

2.3K10

delete的奇怪行为

如getComputedStyle()) 深度遍历 当然,直接添一个getValue()也能达到想要的效果,但getter对使用方更友好,外部完全不知道值是提前算好的还是现算的 delete的奇怪行为分为...但规则是这样,所以奇怪行为1是合理的 占位初始值 猜测如果属性已经存在了,defineProperty()会收敛一些,考虑一下原descriptor的感受: var obj = {}; obj.value...注意:变量对象和活动对象都是抽象的内部机制,用来维护变量作用域,隔离环境等等,无法直接访问,即便Global环境中变量对象看起来好像就是global,这个global也不全是内部的变量对象(只是属性访问上有交集...) P.S.变量对象与活动对象这种“玄幻”的东西没必要太较真,各是什么有什么关系都不重要,理解其作用就好 eval环境的特殊性 eval执行环境中声明的属性和函数将作为调用环境(也就是上一层执行环境)的变量对象的属性存在...: 如果操作数不是个引用,直接return true 如果变量对象/活动对象身上没有这个属性,return true 如果属性存在,但有不能删天赋,return false 否则,删除属性,return

2.3K30
  • JavaScript中的 return await promise 与 return promise

    原文地址:'return await promise' vs 'return promise' in JavaScript 原文作者:Dmitri Pavlutin 译文出自:掘金翻译计划 当从异步功能中返回时...相同行为 为了找到两个表达式(与)的区别,(return await promise vs return promise), 我要使用辅助功能。 delayedDivide(n1, n2)....在此步骤中,您已经看到使用和没有区别 return await promise and return promise 至少在处理成功履行承诺时。 但是,让我们搜索更多! 2....不同行为 现在,让我们采取另一种方法,特别是尝试与被拒绝的承诺合作。要使功能返回被拒绝的承诺,让我们设置第二个参数。...return await promiseawait `catch(error) {...}声明捕获只等待拒绝的承诺在声明中。try {...} 喜欢这个帖子?请分享!

    2.1K20

    聊聊jedis的return行为

    序本文主要研究一下jedis的return行为spring-data-redisRedisTemplateorg/springframework/data/redis/core/RedisTemplate.java...)中小结spring-data-redis的return主要是执行connection的close方法,对应到jedis就是jedis.close(),它会先判断isBroken(取的redis.clients.jedis.Connection.broken...factory.passivateObject§,最后根据maxIdle的参数来判断,超出的则执行destroy,否则根据是否Lifo放回到连接池(idleObjects)中也就说假设获取连接之后,执行的时候...returnBrokenResource从而关闭坏掉的连接,间接实现testOnReturn的效果如果在获取连接的时候,redis挂了,但是连接池仍然有连接,若没有testOnBorrow则返回然后使用...则validate的时候能验证出来连接有问题,则会执行destory然后继续循环获取连接池的连接,直到连接池连接没有了;若获取连接的时候连接池没有空闲连接了,则走create的逻辑,这个时候create

    34920

    return语句的用法

    HTML5学堂:在函数当中,存在着return语句,今天我们就主要讲解一下return在函数中的作用,也来提一提return的默认值是多少,还有就是return语句的返回内容,在书写时需要注意什么。...return在函数中的作用 我们如果将函数看做一个加工厂,参数就是我们向加工厂投入的原料,具体的函数功能实际上就是加工的过程,而return语句代表返回值,就是加工厂在实现加工之后给“投资人”的成品。...return语句的另一个特点,则在于在函数当中,遇到return语句之后就意味着函数运行的结束,在此之后的代码是不运行的。...因此我们可以通过return语句控制函数是否结束。 return的默认值 在一些函数当中,我们有书写return语句,但是在有些函数中并没有出现return语句,那么此时,这些函数的返回值是多少呢?...此处主要涉及的是JS语法的问题,在JS中,默认用分号结束一条语句,在return之后存在一个换行符,虽然没有分号,但是系统会默认为一句话的结束,增加一个分号,于是,上面JS代码中的return语句部分就等价于如下代码

    1.4K50

    聊聊jedis的return行为

    序 本文主要研究一下jedis的return行为 spring-data-redis RedisTemplate org/springframework/data/redis/core/RedisTemplate.java...)中 小结 spring-data-redis的return主要是执行connection的close方法,对应到jedis就是jedis.close(),它会先判断isBroken(取的redis.clients.jedis.Connection.broken...factory.passivateObject§,最后根据maxIdle的参数来判断,超出的则执行destroy,否则根据是否Lifo放回到连接池(idleObjects)中 也就说假设获取连接之后,执行的时候...returnBrokenResource从而关闭坏掉的连接,间接实现testOnReturn的效果 如果在获取连接的时候,redis挂了,但是连接池仍然有连接,若没有testOnBorrow则返回然后使用...则validate的时候能验证出来连接有问题,则会执行destory然后继续循环获取连接池的连接,直到连接池连接没有了;若获取连接的时候连接池没有空闲连接了,则走create的逻辑,这个时候create

    26520

    JavaScript中break、continue和return的区别

    : 从当前的方法中退出,返回到该调用的方法的语句处,继续执行。...,不做任何的处理 } i += 1; } 总结 1、return语句的作用 (1) return 从当前的方法中退出,返回到该调用的方法的语句处,继续执行 (2) return 返回一个值给调用该方法的语句...,返回值的数据类型必须与方法的声明中的返回值的类型一致,可以使用强制类型转换来是数据类型一致 (3) return 当方法说明中用void声明返回类型为空时,应使用这种格式,不返回任何值。...2、break语句的作用 (1) 只能在循环体内和switch语句体内使用break语句。 (2) 当break出现在循环体中的switch语句体内时,其作用只是跳出该switch语句体。...,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环的条件判定。

    1.4K40

    再谈try{ return }finally{}中的return?

    简单翻译: 如果try语句块里有return,那么代码的行为如下: 1.如果有返回值,就把返回值(如果存在)保存到局部变量中 2.执行jsr指令跳到finally语句块里执行 3.执行完finally语句块后...中的基本数据类型。...(1)JDK自带的引用类型: (2)自定义的引用类型: 小结: (1)不管try{}、catch{}中是否有return语句,finally{}都会执行,除非未执行到finally{}时,执行当前...Function的Thread被interrupted 或killed; (2)finally{}中没有return语句时, 如果try{}或catch{}返回值是基本数据类型或其包装类时,finally...语句会的覆盖之前try{}、catch{}中的return语句; (3)如果finally{}中包含了return语句,即使前面的catch{}重新抛出了异常,则调用该方法的语句也不会获得catch{}

    1.5K40

    yield from 关键字的 return 语句

    我经常需要写一些比较复杂的代码,常常会遇到各种各样的问题。比如我在使用yield from 表达式时,return 语句的问题。...我们知道,在使用 yield from 表达式时,return 语句的作用是在子生成器(被调用的生成器)执行完毕后,返回最终的结果到调用者。这可以让生成器在嵌套结构中更清晰地传递值。...,子生成器被允许执行带有值的 return 语句,该值变为 yield from 表达式的值。...在 "yield from" 语句中,子生成器中的 return 语句是如何工作的?...return4 函数现在是一个生成器。为实现这一目标,必须在函数中任何地方出现 yield(Python 3.5 中有一个新的相关特性,但现在并不重要)。

    9810

    break和continue return_break语句和continue语句的区别

    前言 一般刚开始遇到这三个关键字,都会有点乱,return还好,特别是break和continue,特别容易搞混,所以这里记录一下 正文 1、return :直接跳出当前的方法,返回到该调用的方法的语句处...循环外-----"); } } break的测试打印结果 continue的测试打印结果 return的测试打印结果 结论: 从打印可以看出:...只是结束了本次循环, return: 当i = 3时,执行return后,不仅结束了循环,而且结束了方法,直接回到主函数了,所以return的作用...,主要多用于循环和switch结构中 这里说一下,我上面说的结构,是指循环体结构结构,switch结构等,不知道怎么形容了这种东西了,哈哈,感觉语法结构咋一听也不知道是什么,解释一下哈 理解好这个三个关键字...注意: 当前两个字,是指当前所在的结构,例如下面当break出现在循环体中的switch语句体内时,其作用只是跳出该switch语句体 代码: breakbreak /** * break

    95920

    你真的了解try{ return }finally{}中的return?

    当前x的值是1,下一步: ? 这一步跳到finally,现在的x=2,说明执行了try块中的 ++x,下一步: ? 又跳回try块中的return,当前的x=3....是不是有些疑惑 从上面过程中可以看到: 在 try 里 使用 return 还是会执行finally语句的(我们用debug的模式看到了程序会跳到 finally语句里执行)执行完finally语句才执行...从上面 的图可以合理推理出return +xx;是分开来执行的,先执行++x,再执行finally,最后才执行return跳出函数。因为程序调两次跳到了 return +xx; 语句上。...翻译: 如果try语句里有return,那么代码的行为如下: 1.如果有返回值,就把返回值保存到局部变量中 2.执行jsr指令跳到finally语句里执行 3.执行完finally语句后,返回之前保存在局部变量表里的值...当执行到return ++x;时,jvm在执行完++x后会在局部变量表里另外分配一个空间来保存当前x的值。 注意,现在还没把值返回给y,而是继续执行finally语句里的语句。

    1.2K40

    你真的了解try{ return }finally{}中的return?

    验证 finally 语句是否会执行,以及 return 和 finally的执行顺序 在求知欲的驱动下,我继续进行更深的探索,果断打开了Oracle的主页,翻阅了java 官方教程的finally语句...另外,在java的语言规范有讲到,如果在try语句里有return语句,finally语句还是会执行。它会在把控制权转移到该方法的调用者或者构造器前执行finally语句。...继续按一下F6,程序执行到 ++x;,但还没执行该语句,因此此时的x=2(刚执行完return ++x语句的++x,但没执行return) ?...从上面过程中可以看到, 在 try 里 使用 return 还是会执行finally语句的(我们用debug的模式看到了程序会条件 finally语句里执行) 执行完finally语句才执行 return...简单翻译下: 如果try语句里有return,那么代码的行为如下: 1.如果有返回值,就把返回值保存到局部变量中 2.执行jsr指令跳到finally语句里执行 3.执行完finally语句后,返回之前保存在局部变量表里的值

    1.3K50
    领券