2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【自戒】JavaScriptは関数型言語であってオブジェクト指向言語ではない は間違いだよ

Last updated at Posted at 2021-07-08

概要

TwitterでJavaScriptについて誤った解釈のツイートをしました。

するとそれは違う旨の指摘を頂き、調べてみるとどうやら全く理解出来ていなかったみたいでした。
自戒の意を込めて調べた内容をまとめてみました。

JavaScriptにおけるオブジェクトとは

JavaScriptの広義のオブジェクトは
nullとundefined以外の全て

JavaScriptのオブジェクトは全てがその元となるプロトタイプオブジェクトと呼ばれる、オブジェクトの元となるオブジェクトが存在する。

Rubyなどの、クラスのインスタンスとしてオブジェクトが存在するようなのはクラスベースと呼ばれる。

では、関数型言語ってなに?

Wikipedia曰く

数学的な意味での関数を主に使うプログラミング言語のこと。

関数型プログラミングというのはそういうスタイル(副作用が少ない、参照透過性の高い記述ができる1)で書くことを指す。
よって、関数型の色があってもオブジェクト指向言語ではないということにはならない

現に、JavaScriptは第1級関数2をサポートしているので関数型プログラミングができるが、だからといって関数型言語なだけとはならない。

まとめ。なぜ間違えた?

プログラミングパラダイムの中で分類されていたのを見て、「JavaScriptは関数型が使えるんだから関数型言語に分類されるんだ!ならオブジェクト指向じゃないのじゃなくて関数型言語なのか!(´☆ω☆`)ナルホドネ!」と思ってしまいました。

なんかこの辺の思考回路だけ小学生のまま止まってる気がする。。
とはいえこの機会に(ちょっとは)分かった(つもり)になれたので、良かったです!

指摘してくださった方、ありがとうございました!

  1. この辺は混みいりそうな感じなので、再度調べて書き直そうと思います。参照

  2. 関数を、他の基本的なオブジェクト同様に生成、代入、演算といった用途で使用することができる性質のこと。参考

2
2
9

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?