今日はJavaScriptのPromiseについてお勉強をしたので、それについての記事を書きたかったんだけど、時間が足りない!ということで、Promiseを理解するための実験中に起きたなんでもないミスを取り上げる。
なんならタイトル見てわかっちゃう人いっぱいいそう。
こんなコードを書いてたんです。
//白いお皿を用意
const whiteDishes = ["dish1", "dish2", "dish3", "dish4", "dish5"];
//洗い終わったお皿を片付けるための配列を用意
let washedDishes = [];
//お皿を洗う関数を用意
function doingTheDishes(number) {
for (let i = 0; i < number.length; i ++){
//すぐお皿を洗う
washedDishes.push(whiteDishes[i]);
};
console.log(number + "つのお皿を片付けました。");
console.log(washedDishes);
};
doingTheDishes(whiteDishes.length);
JavaScript実行すると
5つのお皿を片付けました。
[]
何度実行してもwashedDishesが空の配列のまま。試しにdoingTheDishes()の外で配列にpushするとちゃんと入るんですね。当たり前。
//白いお皿を用意
const whiteDishes = ["dish1", "dish2", "dish3", "dish4", "dish5"];
//洗い終わったお皿を片付けるための配列を用意
let washedDishes = [];
washedDishes.push(whiteDishes[0]);
console.log(washedDishes);
[ 'dish1' ]
渡す引数間違えたかなと思ってwhiteDishes.lengthを表示してもちゃんと数字を渡してる。当たり前。
//白いお皿を用意
const whiteDishes = ["dish1", "dish2", "dish3", "dish4", "dish5"];
//洗い終わったお皿を片付けるための配列を用意
let washedDishes = [];
washedDishes.push(whiteDishes[0]);
console.log(washedDishes);
console.log(whiteDishes.length);
[ 'dish1' ]
5
いやぁ、これでdoingTheDishes()内がおかしいことが確定したわけです。こっからが難航。for文の書き方とか、関数の定義の仕方とか調べ直して、おかしくないこと確認して、15分ぐらいは格闘した。
もうね、Promiseの実験したくてコード書いてるのにその前段階でつまづいてるのマジでやる気がダウンし始めたところで、気づいた。
for (let i = 0; i < """"""number.length""""""; i ++){
number.length !!!!!!!流石に笑っちゃったw そりゃ一生pushされんw
numberに入るのはwhiteDishes.length、数字ですね。
.lengthは配列や文字列のカウントで数字は対象としていません。というかこれエラーは出ないんだね。試しに以下の文をコンソールに出力してみると
const whiteDishes = ["dish1", "dish2", "dish3", "dish4", "dish5"];
console.log(whiteDishes.length.length);
undefined
ということらしい。
まぁいい勉強にはなった?のかな。こういうの繰り返して、覚えていくもんだと思うんで。結局Promiseの理解は中途な状態なんで、今週中に理解して記事にできたらなぁと。
いきなりPromiseから書くのも意味わからんけどw 順を追った記事はいずれ。とりあえず継続することが目標だから、その日にパッと書けるものから書いてくという感じで。整理もしてないしね!やること山積み!
とりあえず今日は終わり。また、明日。脱3日坊主!頑張るぞー!
コメント