JavaScriptにおけるcount++と++countの違いについて調べてみた

なんとなく怪しいので、count++と++countについて調べてメモしておく。 実行してみる const pre = () => { let count = 0 console.log(++count, 'pre') } const post = () => { let count = 0 console.log(count++, 'post') } pre() // [LOG]: 1, "pre" post() // [LOG]: 0, "post" 前置インクリメント演算子 pre()の方はcountの値が1増えてから更新された値が返されるので、1が出力される。 後置インクリメント演算子 post()の方はcount の現在の値を返し、その後に1を加算するので、0が出力される。 それぞれ適宜場合を見て使用する必要がある。

投稿日 · 2023-06-28 · 更新日 · 2024-06-07 · 1 分 · nove-b

NestJsで作成したプロジェクトをAWSのLambdaにあげて動かすまでの作業ログを残しておく

個人開発プロジェクトのバックエンドをNestJSで作成した。 公開したいので、awsのLambdaに乗せて動かしてみることにした。 初めてのaws、いつかの自分のために記録として一挙手一投足のログを残しておくことにする。 前提 $ node -v v18.16.0 "@nestjs/cli": "^9.0.0", バージョンは上記の通り。 で、Dockerの設定ファイルを諸々作ったが、使っていないので、ない前提でいく。 さて、それでは進めていく。 AWSアカウントの作成 AWSの公式ウェブサイトでアカウントを作成する必要がある。 ルートユーザーの E メールアドレス AWS アカウント名 で新規アカウント作成ができる。 その後、認証コードを経て、 パスワード 連絡先情報(英語で書けって言われたのでchatGPTに住所教えて英語にしてもらった...個人情報) 請求情報 本人確認 サポートプランを選択→無料のベーシックを選択 AWS アカウント作成の流れを参考にすればいけるけど、意外と時間画かかったし、アカウント作成時にクレジットカードを登録することはいい気がしない。 とりあえず、これでアカウント作成が完了した。 必要なパッケージのインストール ここからはNestJS-サーバーレスの公式を参考にしていく。 説明のために、Nest (@nestjs/platform-express完全に機能する HTTP ルーター全体を使用して起動) をサーバーレスフレームワーク (この場合は AWS Lambda をターゲットとしています) と統合します。 公式もawsで説明してくれているので、ありがたい。 $ npm i @vendia/serverless-express aws-lambda $ npm i -D @types/aws-lambda serverless-offline まずは上記の通り、必要なパッケージをインストールする。 "@vendia/serverless-express": "^4.10.4", "aws-lambda": "^1.0.7", "@types/aws-lambda": "^8.10.119", "serverless-offline": "^12.0.4", 上記のようなバージョンがインストールされた。 次に、serverless.ymlファイルを作成する。 service: serverless-example plugins: - serverless-offline provider: name: aws runtime: nodejs14....

投稿日 · 2023-06-25 · 更新日 · 2024-06-07 · 4 分 · nove-b

letの仕様に関する知識を問うJavaScriptの問題

先日、とあるSNSを見ていたら、JavaScriptの問題が出されていた。 さて、ここで問題 let a = 10 if(true) { let a = 20 console.log(a, 'inside') } console.log(a, 'outside') // Q. What is the output of thie below code? // 1. 20, 'inside' and 20, 'output // 2. 20, 'inside' and 10, 'output // 3. 10, 'inside' and 10, 'output // 4. 10, 'inside' and 20, 'output このコードを実行した結果、どのような結果が求められるでしょう。 予想 面白そうなので実行する前に推測してみる。 まず、If文がtrueなので当然のようにIfの中身が実行される。 ここでLetの仕様の話になるのだが、Letは関数内でスコープされるので、先頭で定義されたLetとIf文の中のLetは違うものだということになる。 結果、If文の中のaは20となり、outsideのaはどこからも影響を受けずに10のままになる。 つまり2が正解になると予想される。 結果 [LOG]: 20, "inside" [LOG]: 10, "outside" 正しいと証明された。...

投稿日 · 2023-06-21 · 更新日 · 2024-06-07 · 1 分 · nove-b

JavaScriptでUnary plus (+)を使いかっこよくNumber型に変換する

他人のコードを盗み見ていた時+'0'なるコードを発見しなんだろうと調べてみた。 職人の技は目で盗め ってよく昔気質な職業で聞かれる言葉だけど、有名で最先端の技術がオープンソースで誰でも見れる状態であるプログラミングにも言えるんじゃないかと思っている。 暇さえあれば、Githubで他人のコードを読んでますってかっこいいので言ってみたいけど、噓になるので言えない。 ただ仕事中はできる限り、時間が空いた時にコードをを読むようにしている。 特に自分に関係のないプルリクなんかも追いかけるようにしている。 そこで+'0'なるコードを発見した。 ぱっと見、計算をしているようだと思ったけど、どうやら違いそうなので調べてみた。 単項プラス (+) / Unary plus (+) 簡単に言うとNumberに変換してくれるもの。 つまり+'0'はNumber(0)と同様の扱い。 ただNumber()関数の方がぱっと見でわかりやすいので、あえて 単項演算子を使うメリットはないかもしれない。

投稿日 · 2023-06-13 · 更新日 · 2024-06-07 · 1 分 · nove-b

JavaScriptで2つの配列を比較し、一致したものを取り出す方法コード

なんかよくやるのに、良く忘れるのでメモしておく 2つの配列を比較し一致したものを取り出したい。 特に難しいことはないのでまるっとコードを記載する。 const a:string[] =['a', 'b', 'c', 'd'] const b:string[] =['d', 'e', 'f', 'g'] // 期待値 // const c = string[] = ['d'] const c = a.filter(a =>b.includes(a)) console.log(c) これでcは期待値になる。 どっちをFilterするのか さて、いつもよくわからなくなるのは、どっちを回すべきなのかということ。 例えば今回は両者ともにLengthが4つだからいいけれど、例えば5と10だとどうなるのか。 実際にやってみる const a: string[] = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'] const b: string[] = ['b', 'd', 'f', 'h', 'i', 'xx'] const c = a.filter(a => b.includes(a)) console.log(c) と const a: string[] = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'] const b: string[] = ['b', 'd', 'f', 'h', 'i', 'xx'] const c = b....

投稿日 · 2023-06-06 · 更新日 · 2024-06-07 · 1 分 · nove-b