从函数返回对象(R):关于return()及外部使用product的疑问
搞懂return的用法,轻松在外部获取函数内的对象
嘿,我来帮你把这个问题捋明白~首先先纠正一下你对return的小误解,然后给你演示怎么拿到函数里的product对象。
先澄清:return的核心作用是什么?
你之前的理解有点偏差——return并不是“允许外部使用函数内部的对象”,它的核心是把函数内部生成的值(可以是对象、变量、计算结果等等)传递回调用这个函数的地方。
函数内部的变量(比如你说的product)默认是被“封闭”在函数的作用域里的,外部代码本来根本访问不到。return就像是给这个值开了一个“出口”,主动把它递出函数作用域,让调用函数的代码能接住它。如果函数没有写return,那调用它的时候默认会返回undefined,自然拿不到你想要的对象。
怎么在外部获取函数里的product?
举个实际的例子,假设你之前写了类似这样的代码(没有return):
function makeProduct() { const product = { name: "无线耳机", price: 299 }; // 这里没写return,外部拿不到product } const myProduct = makeProduct(); console.log(myProduct); // 输出undefined,因为函数没返回任何东西
只要给函数加上return product,然后调用函数的时候接收返回值就搞定了:
function makeProduct() { const product = { name: "无线耳机", price: 299 }; return product; // 把product对象从函数里递出去 } // 调用函数,把返回的对象存到myProduct变量里 const myProduct = makeProduct(); console.log(myProduct.name); // 现在就能输出"无线耳机"啦!
额外小知识点:return的其他特性
- 一旦函数执行到
return语句,就会立刻停止执行后面的代码,比如:function makeProduct(inStock) { const product = { name: "无线耳机", price: 299 }; if (!inStock) { return "商品缺货"; // 这里执行后,函数直接结束,不会走到下面的return } return product; } console.log(makeProduct(false)); // 输出"商品缺货" - 你也可以直接返回创建对象的表达式,不用单独存变量:
function makeProduct() { return { name: "无线耳机", price: 299 }; }
这样是不是就清楚多啦?
内容的提问来源于stack exchange,提问作者SeánMcK
相关产品推荐
相关产品推荐

