2016-06-22 13 views
-6

関数型言語では、関数はネストされた関数の引数ブラケットの中で実行できます。これはjavascriptに相当するもので、Schemeからインスピレーションを受けています。javascriptがメソッド内でメソッドを実行できないのはなぜですか?

F(F(F(F)))

console.log(1 + 1) 
//2 

Javascriptを.logメソッド引数かっこ内加算を実行することができるどのように来ますか?

var list1 = [] 
console.log(list1.push("a")) 
//1 

まだそれは.log方法の括弧内のプッシュメソッドを実行することはできませんか?それはなぜ1を返すのですか?

+2

'Array.prototype.push'のドキュメントを見ましたか? – gcampbell

+2

あなたの主な質問は私には意味がありません。 pushは要素を挿入した配列の長さを返すので、1を返します。これは配列に要素をプッシュしますが、push1の戻り値を記録するときにはlist1ではなく、1しか表示されません。 'console.log(list1.push(" a ")、list1)配列に 'a'があることがわかります – eithed

答えて

5

pushは、配列のサイズを返すため:

プッシュ()メソッドは、配列の末尾に新しいアイテムを追加し、そして 新しい長さを返します。

これはプッシュ機能を実行します。期待していた機能を実行していないだけです。

JavaScriptはwritten in only 10 daysでした。私たちはいくつかの設計上の決定に固執しています。私たちができるだけ多くの機能スタイルを得ることさえ驚くべきことです(マーケティングの人々は「Javaのような」言語を求めていたので)。

JavaScriptでは、機能的な方法で記述することができますが、いくつかの障害が存在する可能性があります。

This quoteは興味深いです:

幸いにもEich氏は、彼がするように頼まれたものにもかかわらず、言語 にいくつかの素晴らしいアイデアをこっそりすることができました。

また、完全クリアカットpushは、などのアレイlengthまたは何あなただけプッシュしていた、または全体の配列参照を返す...することが良いだろうかどうかではありません。

5

pushメソッドは、変更したオブジェクトの新しいlengthプロパティを返します。

戻り値: メソッドが呼び出されたオブジェクトの新しいlengthプロパティ。

関連する問題