javascript - javascript 中的 return 语句不退出函数?

标签 javascript function methods

我编写了一个简单的函数来排序对象,并不期望它能够工作,但它确实有效:

function sortObjs(objArr,field) {
    objArr.sort(
        function(a,b) {
            if( isNaN(a[field]) ) {
                return a[field].localeCompare(b[field]);
            } else {
                return parseFloat(a[field]) - parseFloat(b[field])
            }
        }
    );

    return objArr;
}

当我调用这个函数时,我毫无问题地得到了排序的对象。但我没想到它会起作用,因为我认为前两个 return 语句会在到达最后一个语句之前退出函数:return objArr

最佳答案

您有一个嵌套函数。前两个 return 将退出内部函数,而最后一个 return 将退出外部函数。

编辑:

您可以将函数返回视为用返回值“替换”函数。例如:

var i = getSum(1, 3);

function getSum(a, b) {
    return a + b;
}

函数 getSum 返回 a 和 b 的和。 var i = getSum(1, 3) 行将执行函数中包含 a = 1b = 3 的代码行。返回的值“替换”函数调用。所以现在这行代码看起来像 var i = 4;。虽然这并不是它的工作原理,但这是一种很好的概念化方式。这是一种特殊情况,因为您实际上并未在此处运行内部方法,而是将其作为变量传递。

如果您还有其他问题,请告诉我!

关于javascript - javascript 中的 return 语句不退出函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30198287/

相关文章:

javascript - 如何在 DIV 大小值为 'displayed:none' 时获取没有任何大小值的值(使用 javascript 和 CSS)

php - textarea 未发布在 $_POST 中

tensorflow 中的函数

c++ - 调用函数时切换 "transfer of control bypasses initialization of:"

java - Java 子类的父类(super class)方法

Ruby 类方法(如 Math)可作为实例方法包含?

javascript - 否则将无法使用 'document.getElementById()'

javascript - Web Workers 是一种安全的方式来沙盒不受信任的 JavaScript 代码吗

java - 继承时代码重复

javascript - 面临复制两个自动滑动 div 的问题