js 中,不使用數組,不使用對象,可以 return 多組值嗎?
js
可以使用 function* 生成器函數(Generator Function)
function* returnMultiValues() {
yield 1;
yield 2;
yield 3;
return 4;
}
const values = returnMultiValues();
console.log(values.next().value); // 1
console.log(values.next().value); // 2
console.log(values.next().value); // 3
console.log(values.next().value); // 4
這個問題是不嚴謹的,因為即使使用數組和對象,普通函數 return 的也只有一個值,只是這個值(對象或數組)是一個複雜類型而已。 目前來說,真正能返回多組值的只有 ES6 的 generator function。
不知道題主的用意是什麼,js中 數組和對象都是把基本類型的值組合起來形成一組值。 除此之外還有一種組合值的辦法 就是閉包。
Let cos = a =&> b =&> n =&> n ==1?a:b
我們可以 return cos(1)(2)
取值
r(1) -&> 1r(2) -&> 2什麼? 如何組合多個值? 既然我們能組合兩個值就能組合無數個值
cos(1)(cos(2)(3))
剩下的不必我多說了吧
全程手機有誤請提醒可以啊,你把多個值按一定的規則編碼成字元串,返回後再解碼就可以了。
都提到的 generator function 自然是「真正」返回多組值。
但為了幫助題主,還是再提一個類似 [] 和 {} 返回「多個值的方式」(似乎有人不太理解什麼意思,數組和對象所返回的本質上是一個複合結構,而我這段代碼只是用函數的形式模擬了這個複合結構)
function aaa(){
var value1 = 1
var value2 = 2
return function(index){
switch(index)
{
case 1:
return value1
case 2:
return value2
default:
return undefined
}
}
}
es6 函數生成器可以多次返回
沒有數組和對象還有set,generator給你用啊
其實嚴格上來說,我覺得沒有辦法可以滿足題主的要求,js中一個函數return一次後就不可能再return了
如果真的要這麼做,你可以考慮go,人家天生就支持return多個值es6的Generator Function以及解構賦值
不知道es6中的解構賦值能不能滿足你的要求
你可以throw多組值
使用 DOM 樹、逗號分隔的字元串……
推薦閱讀:
※TypeScript 的命運會不會和 CoffeeScript 一樣 ?
※如何看待阿里開源的Rax框架?
※瀏覽器端js有如何為本機生成固定的uuid?
※有沒有必要將 DOM 結構緩存到本地?如果有,意義是什麼?
※前端開發有沒有必要學習less,sass,coffee script等語言?
TAG:JavaScript |