Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[meta] 用語集 #231

Open
azu opened this issue May 24, 2017 · 11 comments
Open

[meta] 用語集 #231

azu opened this issue May 24, 2017 · 11 comments

Comments

@azu
Copy link
Collaborator

azu commented May 24, 2017

文章書くときに使ってる用語をどこかにまとめておきたい。
prh.ymlに入れてはいるけど、なんでそうしたんだっけってなりそう。
とりあえず、用語的な意思決定したリンクとか内容をここに貼っておく

@azu
Copy link
Collaborator Author

azu commented May 24, 2017

https://tc39.github.io/ecma262/#sec-patterns

The RegExp constructor applies the following grammar to the input pattern String. An error occurs if the grammar cannot interpret the String as an expansion of Pattern.

とあるので正規表現の中の文字列は パターン でよさそう。

new RegExp("pattern");
//          ^^^^^^^^
//          パターン文字列の部分を"パターン"
   /pattern/
// ^^^^^^^^^
// 全体が正規表現

#21 (comment)

@azu azu added the Type: Meta label May 24, 2017
@azu
Copy link
Collaborator Author

azu commented May 24, 2017

テンプレートリテラル

Name Code
タグ関数(tag function) String.raw`template`
タグ付きテンプレート(Tagged Templates) String.raw`template`
テンプレートリテラル(Template Literals) `template`
テンプレート文字列(TemplateStrings) `template` (`の中の文字列)

#121 (comment)

@azu
Copy link
Collaborator Author

azu commented May 24, 2017

ラッパーオブジェクト

#196 (comment)
#196 (comment)

@azu
Copy link
Collaborator Author

azu commented May 26, 2017

JavaScriptの文脈で「クラスを作って、そのインスタンスを作る。」とかいう人までいますし。
JavaScript - プロトタイプベースのオブジェクト指向言語が広く使われていない理由は?(77753)|teratail

#168 のやつそういう言い方はするんだけど、コンストラクタからインスタンスを作るという話。
ただしこれは仕様からそういう言い回し、class syntaxはコンストラクタを定義する構文という認識。

4.3.16Boolean object
member of the Object type that is an instance of the standard built-in Boolean constructor

こういうのはこの本ではそういう言い方をするよって明記が必要かなと思った

@azu
Copy link
Collaborator Author

azu commented Oct 1, 2017

...Spread演算子 Sprea構文と呼ぶ

突っ込まるとそうですねとしか言いようがないためspread operatorとは呼ばないことにする #420
次のように呼ぶ

  • 引数: fn(...args) : restパラメータ
  • 配列/文字列: ...array : spread 構文
  • オブジェクト: { ...obj } : spreadプロパティ
ECMAScriptの用語としては存在しないけど演算子っぽく見えるのでよく使われている。
ECMAScriptのsyntaxでは `...expression` でSpreadElementという定義があるだけ。

- https://tc39.github.io/ecma262/#prod-SpreadElement

@azu
Copy link
Collaborator Author

azu commented Oct 1, 2017

使わない: ローカルスコープ

ECMAScriptの用語的にはグローバルスコープはあるけどローカルスコープという対義語っぽいのはでてこない。この本でも"グローバルスコープ"は使うけどローカルスコープは使ってない。
具体的な関数スコープとかブロックスコープという名前にしている。(なのでグローバル <-> ローカル みたいな対比はでてない)
多分これはグローバルスコープと関数スコープしかなかった時のものに広まっていた呼び方、もしくは他の言語でも通じる呼び方なので使われている感じ。

スコープという概念もECMAScriptではEnvironment Record(変数のbindingを記録する場所と操作)がそれに該当するので、スコープという変数があるわけではないという。(まあそれによって形成された領域がスコープという呼ばれ方)
Environment Record == Scope

グローバル <-> ローカルだけだと、モジュールのスコープはどっち?という問題があるのであんまりローカルという言葉が明確出来ないかなというが一つの理由

@azu
Copy link
Collaborator Author

azu commented Nov 23, 2017

Arrow Function以外の関数

関数といったときには関数宣言、関数式、Method definitionとArrow Functionなどがある。
thisにおいては、Arrow Functionとそれ以外という分類になってしまうため、「Arrow Function以外の関数」という言葉を使う #316

名前 関数 メソッド
関数宣言(function fn(){}) x
関数式(const fn = function(){})
Arrow Function(const fn = () => {})
メソッドの短縮記法(const obj = { method(){} }) x

Explore JSだと13.2 Traditional functions are bad non-method functions, due to thisという表現を使ってるけど、Method DefinitionもthisのルールにおいてはTranditionalとなってしまうため。

@azu azu mentioned this issue Dec 3, 2017
1 task
@azu
Copy link
Collaborator Author

azu commented Dec 30, 2017

ベースオブジェクト

ベースオブジェクトとは「メソッドを呼ぶ際に、そのメソッドのドット演算子またはブラケット演算子のひとつ左にあるオブジェクト」のことを言います。
つまり、メソッドではないfn()のような関数呼び出しにはそもそもベースオブジェクトはありません。

this の話で利用している。 #324 #324

元ネタはECMAScriptのGetBase ( V )から。(thisの値を決めるときに呼ばれる。Vのベースコンポーネントを取得する関数)

@azu
Copy link
Collaborator Author

azu commented Jul 9, 2018

イベント

イベントに関する用語は次の通り。

  • イベントをディスパッチする
  • イベントをリッスンする
  • イベントが発生した
  • イベントリスナー (イベントハンドラーではなくリスナー)
    • リスナー関数

参考

@azu
Copy link
Collaborator Author

azu commented Mar 19, 2019

ビルトインオブジェクト

@azu
Copy link
Collaborator Author

azu commented Jun 30, 2019

用語 意味
文字列 Stringオブジェクトのこと "string"
検索文字列 String#indexOf(検索文字列) など検索対象などに指定した文字列のこと "string".indexOf("検索文字列")
置換文字列 String#replace(検索文字列, 置換文字列) のように、replaceメソッドで文字列中の検索文字列に一致した部分を置き換える文字列 "string".replace("検索文字列", "置換文字列")
パターン /パターン/ 正規表現のbodyのこと /パターン/
フラグ /パターン/i の ig などのこと /パターン/i
パターン文字列 new RegExp("パターン文字列") コンストラクタの場合に渡す文字列のこと。正規表現へ変換されることを想定した文字列のこと new RegExp("パターン文字列")
正規表現オブジェクト new RegExpや/パターン/ の返り値であるRegExpのインスタンスオブジェクト var 正規表現オブジェクト = /パターン/フラグ

参考

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant