Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
ECMAScript 6(2015年6月に公開され、今もなお比較的新しい JavaScript)の大目玉である イテレータ と ジェネレータ。なかなかに複雑で巨大な仕組みになっていてややこしいです。 そこで今回は ジェネレータ を、順を追って理解できるように解説したいと思います。 Qiita: JavaScript の イテレータ を極める! ←こちらから読むのがオススメです Qiita: JavaScript の ジェネレータ を極める!(この記事) また、実用的なサンプルを「3. 実用サンプル」に示しました。 初めにこちらを見て、何ができるのかを知ってから読み始めるのもオススメです。 (2017年3月現在、オープンなページでの使用はまだ避けたほうがいいかもしれませんが、実装は確実に進んでいます。ECMAScript 6 compatibility table) 1. ジェネレータ、ジェ
もう語り尽くされた感もあるのですが、async/awaitで複数のPromiseを待ち合わせる場合のやり方についてです。 Chrome 69のDevToolsのコンソールで動作確認を行いました。 3行で Promise.all() を使う方法があるよね awaitの配列を作る方法もあるみたいなんだ おもしろいね(小並感) Promise.all()をawaitする 筆者がよくやるのは、Promise.all()をawaitする方法です。 async function hoge() { const start = Date.now(); // 時間計測用 // sleep的なやつ const p11 = new Promise(resolve => setTimeout(resolve, 1000)); const p12 = new Promise(resolve => setTimeou
JavaScriptでcookieを削除するためには、cookieの有効期限を過去日付または残存期間に0を設定します。ただし、cookieに有効期限または残存期間が設定されていない場合には、cookieはブラウザの終了時に削除されます。 cookieを削除する方法は2通りあり、どちらの方法でも削除することができます。 document.cookie = "削除対象の名前=; max-age=0"; document.cookie = "削除対象の名前=; expires=過去の日付"; max-ageの場合はcookieの残存期間を秒数で指定します。 expiresの場合はGMT(グリニッジ標準時)形式の日付を指定します。GMT形式への変換は、toUTCString関数で行うことができます。 セットされたcookieを削除する 以下はcookieのセットされた値を削除する例です。 // c
「match」の戻り値について! matchメソッドの戻り値について少し補足します。 matchメソッドの引数で指定した文字列パターンが抽出されなかった場合、matchメソッドからはnullが返ります。そしてもし一致する文字列が存在した場合は、抽出された文字列を配列で返します。 この仕組を利用すれば、IF文などの条件式としても利用できます。以下は、文字列内に2桁以上4桁以下の数字が含まれているかを条件分岐したサンプルコードになります。 const mystr = '1234'; const result = mystr.match(/\d{2,4}/); console.log(result); if (result!=null){ console.log('正規表現パターンにマッチしました'); } else{ console.log('正規表現パターンにマッチしませんでした'); }
Array.forEachとは ECMA-262標準で追加されたメソッドで、for文を書かなくても、Arrayの要素すべてに対してcallbackの処理を行ってくれる便利なメソッドです。 たとえば、配列の中身をすべて表示するようなコードを組んでみましょう。 // テストデータ const TEST_DATA = ["a", "b", "c", "d", "e"]; // 従来の記法 for(let i = 0; i < TEST_DATA.length; i++){ console.log(TEST_DATA[i]); } // forEachを利用した記法 TEST_DATA.forEach(value => { console.log(value); }); 関数型言語っぽい非常にシンプルな記述が可能ですね。 forブロック内における、break、continue、returnと同じ動
引数 value1, …, valueN 省略可 新しい配列に連結する配列や値です。 すべての valueN 引数が省略された場合、 concat は呼び出された既存の配列のシャローコピーを返します。 詳しくは下記の解説をお読みください。 返値 新しい Array インスタンス。 解説 concat メソッドは新しい配列を作成します。この配列には、まず、このメソッドが名付けられたオブジェクトの要素が入ります。それから、それぞれの引数に対して、その値が配列に追加されます。通常のオブジェクトやプリミティブの場合、引数自体が最終的な配列の要素になります。配列や 配列風のオブジェクトで Symbol.isConcatSpreadable プロパティを真値に設定している場合、各引数の要素は独立して最終的に配列に追加されます。 concat メソッドは入れ子になった配列の引数に再帰的にアクセスすること
引数 separator 各分割がどこで行われるかを表すパターンです。undefined、文字列、または Symbol.split メソッドを持つオブジェクトを指定することができます。典型的な例は正規表現です。separator を省略したり undefined を渡したりすると、split() は呼び出し元の文字列を 1 つの要素とする配列を返します。undefined でない値、または [Symbol.split]() メソッドを持つオブジェクトはすべて文字列に変換されます。 limit 省略可 配列に含める部分文字列の数の制限を指定する非負の整数。指定した場合は、指定した separator が出現するたびに文字列を分割しますが、limit 個の項目が配列に格納された時点で分割を終了します。残った文字列は配列に格納されません。 制限数に達する以前に文字列の末尾に達した場合は、配列の要
引数 object オブジェクト名、またはオブジェクトとして評価される式です。 property 削除するプロパティです。 返値 プロパティが自分自身の構成不可のプロパティであった場合、 strict モードでなければ false を返します。それ以外の場合は true を返します。 例外 strict モードでは、プロパティが編集不可の場合、TypeError が発生します。 解説 一般的に信じられていることとは異なり (おそらく C++ における delete のような他のプログラミング言語の影響ですが)、delete 演算子は、直接的にメモリーを解放することはありません。メモリーの管理は参照が切れることで間接的に行われます。詳細はメモリー管理を参照してください。 delete 演算子は指定したプロパティをオブジェクトから取り除きます。削除に成功すると true を返し、そうでなければ
JavaScriptにおけるシャローコピー(shallow copy)とディープコピー(deep copy)について簡単にまとめました。 shallowは日本語で「浅い」という意味になります。 シャローコピー シャローコピーはざっくり言うと参照元のオブジェクトとコピー先のオブジェクトどちらも同じメモリを参照していることをいいます。 簡単な例 const obj = { name: "hoge", age: 24 } const obj2 = obj obj.name = "fuga"; console.log(obj2.name) // fuga console.log(obj.name) // fuga 同じメモリを参照しているのでobj2のnameを変更するobjのnameも変更されてしまいます。 ディープコピー ディープコピーとは、オブジェクトのみのコピーではなく、オブジェクトとメモ
Install bower install moment-timezone --save # bower npm install moment-timezone --save # npm yarn add moment-timezone # Yarn Format Dates in Any Timezone var jun = moment("2014-06-01T12:00:00Z"); var dec = moment("2014-12-01T12:00:00Z"); jun.tz('America/Los_Angeles').format('ha z'); // 5am PDT dec.tz('America/Los_Angeles').format('ha z'); // 4am PST jun.tz('America/New_York').format('ha z'); // 8
引数 なし。 返値 現在時刻のタイムスタンプをミリ秒単位で表す数値です。 解説 時間の精度の低下 タイミング攻撃やフィンガープリンティングに対する保護機能を提供するために、 someFile.lastModified の精度がブラウザーの設定に応じて丸められることがあります。 Firefox では、privacy.reduceTimerPrecision 設定は既定で有効になっており、既定で 2 ミリ秒になります。この場合、精度は 100ms または privacy.resistFingerprinting.reduceTimerPrecision.microseconds の値のどちらか大きい方になります。 例えば、時刻の精度を下げた場合、 Date.now() の結果は常に 2 の倍数になり、privacy.resistFingerprinting を有効にした場合は 100 の倍数(
ゼロパディング(zero padding)とは、書式の桁数に満たない数値の場合に、足りない桁数だけ 0 を追加して桁数を合わせることです。 たとえば3桁で1を表す場合、足りない2桁をゼロで埋めて 001 と表記します。 JavaScriptでは、String.slice() を使って桁数を合わせます。 たとえば変数 num の値の書式を3桁にしたい場合、下記のようになります。 var num = 1; var ret = ( '000' + num ).slice( -3 ); console.log(ret); 出力結果 001 希望の桁数だけ '000' の0を増やし、その桁数を solice( -3 ) として指定します。 2桁にしたい場合は下記になります。 var ret = ( '00' + num ).slice( -2 ); 値が想定する桁数を超えたときは上記の桁が失われるの
他の言語とはひと味違う、JavaScriptのObject比較方法 修正とお詫び コメントにて、JSON.stringifyがObject順序を保証しない、というご指摘を頂きました。誤った情報を掲載してしまったことをお詫び申し上げます。 JSON.stringify()によると、 注: 配列以外のオブジェクトのプロパティでは、特定の順番で文字列化されることは保証されていません。文字列化された同じオブジェクトの中でプロパティの順番に依存しないようにしてください。 とのことでしたので、JSON.stringifyをObjectに適用する方法ではなく、es6より実装された`Object.entries`を利用し、配列に適用する方法に修正しております。 JavaScriptのObjectとは JavaScriptのObjectは、他の言語における、いわゆる「連想配列」です。 こうしたい const
const array = [1,1,1,1,{a: 1}]; const array2 = array; // 代入 const array3 = [...array]; // spread演算子による展開代入 (Shallow Copy) const array4 = array.concat(); // concatによるShallow Copy const array5 = JSON.parse(JSON.stringify(array)); // Serialize/DeserializeによるDeep Copy array[0] = 2; array[4].a = 2; console.log(array); // [ 2, 1, 1, 1, { "a": 2 } ] console.log(array2); // [ 2, 1, 1, 1, { "a": 2 } ] cons
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く