質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

4回答

1059閲覧

javascript 変数宣言の表記がわからない

violineer

総合スコア72

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

1グッド

1クリップ

投稿2018/03/13 01:53

js

1let { chapter, section, exercise } = this.findByExerciseId( 2 course, 3 exerciseId 4 );

上記コード、letの後の{}はどのような役割ですか??
変数をいくつか宣言するのにはカンマだけでいいという認識なのですが

sota_u👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

中括弧を使った記法は分割代入といって、単なる変数宣言とは意味が違います(MDN)。

javascript

1// 以下のコードと同じ意味 2const ret = this.findByExerciseId( 3 course, 4 exerciseId 5 ); 6 7let chapter = ret.chapter, section = ret.section, exercise = ret.exercise;

投稿2018/03/13 01:56

maisumakun

総合スコア145184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

「オブジェクトの分割代入」というものです。

【分割代入 - JavaScript | MDN】
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#オブジェクトの分割代入

【《JavaScript》ES6の分割代入のはじめかた。 - Qiita】
https://qiita.com/uto-usui/items/a9d17447fe81c17c41fa#オブジェクトの分割代入

投稿2018/03/13 01:58

kei344

総合スコア69407

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ES2015で追加された分割代入という構文です。
分割代入 - MDN

右辺はオブジェクト固定であり、
左辺では右辺のオブジェクトを分割しながら変数を宣言します。

JavaScript

1const hoge = {foo: 123, bar: 234}; 2let {foo, bar, piko} = hoge; 3console.log(foo, bar, piko); // 123, 234, undefined

この様にJavaScriptは下位互換を残しつつも、
ES2015では様々なモダンな構文を追加しているので、
ES2015の構文をバリバリに活用したコードはES5までのコードと比べて別次元のように違います。

ES2015やES6といったワードで検索してみてください。

投稿2018/03/13 02:36

編集2018/03/13 02:37
miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

サンプルコード

// 1つのオブジェクトを返すデモ関数 function findSiteById(id) { return { id: 1, name: 'teratail', type: 'web', image: 'default.jpg' } } // 複数のオブジェクトを持つ配列を返すデモ関数 function findSitesByType(type) { return [ { id: 1, name: 'teratail', type: 'web', image: 'default.jpg' }, { id: 2, name: 'facebook', type: 'web', image: 'default.jpg' }, { id: 3, name: 'yahoo', type: 'web', image: 'default.jpg' }, { id: 4, name: 'google', type: 'web', image: 'default.jpg' } ] } //オブジェクトの分割代入 const { id, name, ...params } = findSiteById(1); console.log(id); //1 console.log(name); //teratail console.log(params); //{ type: 'web', image: 'default.jpg' } console.log('=========='); //配列の分割代入 const [a, b, ...rest] = findSitesByType('web'); console.log(a); //{ id: 1, name: 'teratail', type: 'web', image: 'default.jpg' } console.log(b); //{ id: 2, name: 'facebook', type: 'web', image: 'default.jpg' } console.log(rest); //[ { id: 3, name: 'yahoo', type: 'web', image: 'default.jpg' }, //{ id: 4, name: 'google', type: 'web', image: 'default.jpg' } ]

https://repl.it/repls/DifferentCompatibleLightweightprocess

投稿2018/03/13 02:17

編集2018/03/13 02:26
HayatoKamono

総合スコア2415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問