VTeacher所属のSatokoです。 QAエンジニアとフロントエンドエンジニアを兼任しています。 2006年、まだホリエモン率いるライブドア(現LINE)のモバイルチーム(現LINE出澤社長がリーダー)に配属も、同年1月にライブドアショックがあって出社0日で失職。その後、サイバーエージェントやGREEなどを転々としてきたITバブルの残党(ナイスミドル系エンジニア)です😅 1.久しぶりにReactのプロジェクトに参加 リズミカルにキーボードを タタンッ! として、
はじめに 本記事では、constこそが唯一神であることを証明したあと、letを使いがちな場面でいかにしてconstを使うかをまとめていきます。なお、ES2018までの基本構文(reduce, async/await, 配列とオブジェクトのスプレッド構文)を使用します。「いや、reduceとかスプレッド構文とか難しいからlet使うわ」という方のために、便利メソッド詰め合わせであるLodashを使った例もご紹介します。もちろん、Lodashは機能に対してサイズが大きいライブラリであるため、フロントエンド開発でバンドルサイズを軽減したいという方などはLodashの例は無視し、Lodashを使っていない方の例をご参照いただければと思います。 追記:Lodashの使用について 「Lodashのコードにlet使われてるやん」というご指摘を多く頂いたので追記いたします。 誤解を招くタイトルにしてしまい申
両者の違い エディタでホバーするといずれも 1 という型が表示され、一見同じことをしているように思えるかもしれません。しかし、これらは明確に違う型を持ちます。 その前に、すべての変数は、その変数の型とは別に、Type Narrowingという仕組みによって一時的に別の型として取り扱う機能があります。 それぞれ、仮に global type と narrowed type と呼ぶことにします。 すると、const n: 1 = 1 は (global type, narrowed type) = (1, 1) ですが、const n = 1 は (global type, narrowed type) = (number, 1) です。これは以下のようなコードで確認ができます。 const n: 1 = 1; const getN = () => n; // inferred as () =
序 ここ数日、for文の由来は何か? と言う話題が上がった。 シンタックスのキーワードの由来については自分も関心があって、好きなトピック。 中でも、いつも思っていたことがあって、JavaScriptの変数宣言に使われるキーワード選定が謎と言うのがある。 このことについてツイートしたところたくさんの方に反応をいただけたので備忘録として。 元ツイ: https://twitter.com/ubugeeei/status/1691491304428236800?s=20 お気持ち: https://twitter.com/ubugeeei/status/1691623230812123376?s=20 その他お気持ち: https://twitter.com/ubugeeei/status/1691519021957672961?s=20 https://twitter.com/ubugeeei
TypeScript 4.9 から、satisfies operator が使えるようになりました。従来のas constと組み合わせ、型チェックと widening 防止を同時に行えます。筆者的には、"顧客が本当に必要だったもの"です。 本記事では satisfies とは何か? as const とは何か? 2つを組合わせるとどのようなメリットがあるのか? について、実際のコードと共に解説します。 結論 TypeScriptで 定数を export する場合は、as const satisfies を設定しておくと便利です。 export const myName = "田中" as const satisfies string; export const foodList = { ramen: "ラーメン", udon: "うどん", soba: "そば" } as const sa
error[E0010]: allocations are not allowed in constants --> const.rs:1:23 | 1 | const VEC: Vec<i32> = vec![1]; | ^^^^^^^ allocation not allowed in constants | = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) この制限された static や const の右辺に書くときの文脈を const文脈 と呼びます。 この他には配列初期化構文 [init; size] の size の部分やその型 [Type; Size] の Size 、あとはC-like列挙型の判別子の設定に書ける式も
TypeScript: const type parameterを用いるとas const(constアサーション)が省略できるTypeScript この記事では、TypeScriptにおけるconst type parameterという概念と、それがどのようにas const(constアサーション)の使用を省略できるかについて説明します。これは初心者にとって少し複雑に感じるかもしれませんが、実際には非常に便利で強力な機能です。では、早速見ていきましょう。 基本的な関数の例 まずは、基本的な関数を2つ見てみましょう。 function withoutConst<T>(value: T): T { return value; } function withConst<const T>(value: T): T { return value; } ここで、withoutConstとwithC
After more than 3 years since the original RFC for const generics was accepted, the first version of const generics is now available in the Rust beta channel! It will be available in the 1.51 release, which is expected to be released on March 25th, 2021. Const generics is one of the most highly anticipated features coming to Rust, and we're excited for people to start taking advantage of the incre
再宣言 一度宣言した変数を、同じ変数名で宣言し直すことを再宣言といいます。 再宣言可能なvarで再宣言した場合、後に宣言した変数が適用され、 再宣言不可能なlet/constで再宣言した場合、エラーになります。 varでは、予期しない再宣言が起こりうるため危険です。 // var var a = 0; var a = 1; console.log(a) // `1`と出力される // let let b = 0; let b = 1; // SyntaxError: Identifier 'b' has already been declared // const const c = 0; const c = 1; // SyntaxError: Identifier 'c' has already been declared
LogRocket’s Galileo AI watches every session, surfacing impactful user struggle and key behavior patterns. Editor’s note: This article was last updated on 9 March 2023 to add a section about the difference between const declarations and assertions. Since their inception in Typescript 3.4, const assertions have remained a powerful tool for creating more precise and type-safe code. This feature was
プログラム未経験の知人にJavaScriptを教えていた所、「varとletとconst、何が違くて、どう使い分ければいいのかわからない」と言われ、私なりにもう一度深く調べたので、上記についてまとめます。 var(変数) 再宣言・再代入が可能で、古いブラウザでも動く(ES5以下でも動く)。 スコープは関数スコープで、以下のようなコードが書ける。 function (){ var x = 0; console.log(x); //0が出力 var x = 1; console.log(x); //1 x = 2; console.log(x); //2 if (true){ console.log(x); //2 x = 3; var y = "a"; } console.log(x); //3 console.log(y); //a } function (){ console.log(x
プログラミングを行う際に、非常によく使われる手法として変数宣言があります。 例えば、「この箱には、12という数値を入れる」「あの箱には、”JavaScript”という文字列を入れる」など、変数の名前(箱)と、変数に格納されるデータ(文字列や数値など)を決められるのが変数宣言です。 宣言された変数は、繰り返し使える利便性があり、計算式や関数を作る場面で活躍します。 JavaScriptでは、主にletとconstを使って変数宣言を行いますが、どちらを使うべきかシチュエーションに悩む方も少なくないのではないでしょうか。 今回は、letとconstをうまく使い分けられるように、それらの性質やスコープとの関係性について紹介していきます。 var letとconstの性質を説明する前に、varという変数について少し補足します。 プログラミング言語が時代とともに進化していくように、JavaScript
本記事は、TechFeed Experts Night#11 〜 JavaScript/TypeScript最前線のセッション書き起こし記事になります。 イベントページのタイムテーブルから、その他のセッションに関する記事もお読み頂けますので、一度アクセスしてみてください。 本セッションの登壇者 セッション動画 私は鹿野壮(@tonkotsuboy_com)といいます。今はマネーフォワードビジネスカンパニーというところで経理財務プロダクト本部開発部副部長というのをやっております。 最近、「JavaScriptコードレシピ集」(技術評論社)という書籍を書いたり、「日経ソフトウェア」(日経BP)でCSSやJavaScriptの最新記事を書いております。 本日伝えたいことのまとめですが、「as const satisfiesを使うと、wideningの防止と型推論結果の保持ができる」ということです
My previous post included this paragraph: let vs const vs var: Usually you want let. If you want to forbid assignment to this variable, you can use const. (Some codebases and coworkers are pedantic and force you to use const when there is only one assignment.) This turned out to be very controversial, sparking conversations on Twitter and Reddit. It seems that the majority view (or at least, the m
あいにくの雨でしたが,Meguro.vim #16 に参加しました. 「この雨の中 Vim のもくもく会に来た者たちだ.面構えが違う」 #megurovim— ドッグ (@Linda_pp) June 15, 2019 目黒.vim は Vim に関したり関しなかったりする作業をするもくもく会で,今回は Vim に :const を追加するパッチを書きました. github.com :const コマンドの機能 Vim script では変数を :let で定義・代入します.ですが, 新しい変数定義時も代入時も同じ :let を使う if などで新しいスコープが作成されない(動的スコープ) により,意図せず既存の変数を上書きしてしまうケースがあります. " Define variable let i = 0 if some_condition " In heavily nested or
こんにちは。早速であれなんですが、 constで export default できないですよね!? なんで!? って話したいと思います。 const で export default できなかった。。 ReactとかES6系でjavascript書いていると、ファイルを分割してimportで読み込んだりしますよね? 分割先の別ファイルのfunction(関数)を使いたいとき、分割先ファイルのfunctionをexportして使えるようにすると思うんですが、下記の状態だとうまいことexportできません。 export default const sample = () => { // Something code } なんっでっ。 ちなみにこれだといける。 const sample = () => { // Something code } export default sample;
JavaScriptの変数を使い分けるには、let、var、constの違いを理解する必要があります。それぞれの違いについて3つの役割に分けて解説します。 再宣言、再代入 再宣言は一度宣言した変数名で再度宣言すること。再代入は値が入っている変数に上書きで代入することです。 varは再宣言と再代入のどちらも可能で、constはどちらも不可能。letは再代入できるものの、再宣言できないという違いがあります。 // 再宣言 var hoge1 = 1; var hoge1 = 2; console.log(hoge1); // 2 let hoge2 = 1; let hoge2 = 2; // ここでエラーが発生 const hoge3 = 1; const hoge3 = 2; // ここでエラーが発生 // 再代入 var hoge1 = 1; hoge1 = 2; console.lo
2018年1月4日2020年4月15日 C++ には const というキーワードがあります。さほど難しい概念でもないし、一度覚えてしまえば、逆に使わないことが気持ち悪くなるぐらい、不可欠なものです。料理でいえば、何かを切ったら包丁を拭くことと同じようなもので、プロにしてみれば、当たり前すぎて意識にも上らないような動作の一つでしょう。 ですが、私が今まで見てきたところでは、仕事で C や C++ を書いている人のうち、少なく見積もっても90%の人は、const を使いません。ですから、もしあなたが初心者だとして、このキーワードを使いこなせるようになれば、その時点で上位10%のプログラマーに食い込めることになります。さらに言うと、その使い方を覚えるのに、1時間もかかりません。 6つの意味 const キーワードは、一言でいうと、修飾する対象が不変であることを示すものです。ただし、その対象とな
原文: Var, Let, and Const – What's the Difference? 新しい機能がたくさん ES2015 (ES6) で発表されました。2020 年現在、多くの JavaScript の開発者はその機能に慣れ、そして使い出したと考えられています。 この考えは部分的には正しいかもしれませんが、一部の開発者には、その機能のいくつかはいまだに謎のままかもしれません。 ES6 で発表された機能のひとつに、let と const の追加があります。これらは、変数宣言に用いられます。問題となるのは、私たちが使用してきた古き良き var とどう違うのかということです。もし、この違いをまだ十分に理解されていないならば、この記事が役に立つことでしょう。 この記事では var、let、const のそれぞれのスコープ、使用法、宣言の巻き上げ (hoisting) に関して説明します
TypeScript の tsc コマンドを叩いたときに const x:number = ''; がコンパイルエラーになるまでの道のりTypeScriptAST TypeScript がどのようにして型チェックをしているのかとふと疑問に思ったのでコードを読んでみました 実際に tsc コマンドを叩いてから const x:number = ''; という「数字型の変数宣言に文字列の値を代入」するコードがコンパイルエラーとして検出されるまでの流れを一通り読んでみたので、解説してみようと思います TypeScript のアーキテクチャ概要について TypeScript のリポジトリの wiki に、TypeScript 本体のアーキテクチャについての概要が記載されています Architectual Overview のページを見ると、最初に以下の図が掲載されており、ここには TypeScri
Currying is a functional programming technique that allows you to partially apply a function’s arguments and return a new function that takes the remaining arguments. This is widely used in functional programming languages like Haskell, as a fundamental tool for many design patterns. However, today we use the technique in Rust to improve the performance of our functions. TL;DR: You can also take a
最初に 本記事はconstとreadonlyとstatic readonlyの違いと使い方に対して解説したものとなります。 また本記事は一度昔に個人ブログにあげていたものに修正を加えて再掲したものとなります。 そもそもどんな時に使うのか? 定数や、それに似た数を宣言する際に使用します。定数とはその名の通り、値が固定されて今後変更しないとわかっている数のことで、定数に格納された値は、アプリケーションの実行中に変わることはありません。なので、例えば時間が経つにつれて変更される可能性がある情報を表すために定数を使用するべきではないです。定数には、数字、bool、文字列などのプリミティブ型などが含まれています。 また、定数を使用する目的としては、マジックナンバー・文字列定数入力ミスの削減があげられます。 宣言をするに当たって、C#ではconst , readonlyが使用され、C++ではdefin
ローカル変数 一度入力した値を変更できる var グローバル変数 いつでもどこでも変更可能 なるべく使わない 使い方 上に書いたやつ優先で使う constが最優先で、次点がlet 使用例 雰囲気で感じろ if(true){ const hogeConst = "hoge1"; let hogeLet = "hoge2"; var hogeVar = "hoge3"; console.log(hogeConst); // hoge1 console.log(hogeLet); // hoge2 console.log(hogeVar); // hoge3 hogeConst = "hoge4" // エラー hogeLet = "hoge5" // hoge5 hogeVar = "hoge6" // hoge6 console.log(hogeLet); // hoge5 console.
This release enables parsing top-level await (Stage 4 at the May meeting) and transforming ergonomic brand checks for private fields (Stage 4 at the July meeting) by default. There is also now support for the Hack-style pipeline operator. We also improved our TypeScript support, implementing transform support for const enums and namespace aliases, and we expanded our heuristics to add .displayName
なんとなくてきとーに書いたけど 見てくれている方が結構いるみたいなので 名前空間 について追記しました どちらも定数を定義するときに使う <?php define('MY_CONST_1', 'defineで定義した定数'); const MY_CONST_2 = 'constで定義した定数'; echo MY_CONST_1; // defineで定義した定数 echo MY_CONST_2; // constで定義した定数 1.関数と構文 define は関数 const は構文 define は関数の呼び出しのオーバーヘッドがあるため 遅い const は関数じゃないから 速い 2.変数や、関数の戻り値を使えるか使えないか define は変数や、関数の戻り値を使える
この記事はRust 2 Advent Calendar 2020 22日目の記事です。 const genericsとは const genericsとは下記のようなジェネリクスパラメーターに定数を渡せる機能です。 記事を書いている2020/12/22時点ではstableに入っていませんが、こちらのissueによるとRust 1.50でstableに入れることを予定しているそうです。 C++でテンプレートメタプログラミングをしていた方々には慣れ親しんだ機能だと思います。 const genericsを利用する方法 const genericsを利用するにはnightlyチャンネルで#![feature(min_const_generics)]を書く必要があります 使用可能な箇所 基本的にジェネリクスを使用できる場所でならどこでも使用できます。
As of C++20, we have four keywords beginning with const. What do they all mean? Are they mostly the same? Let’s compare them in this article. const vs constexpr const, our good old fried from the early days of C++ (and also C), can be applied to objects to indicate immutability. This keyword can also be added to non-static member functions, so those functions can be called on const instances of a
今回はGASの入門編第4弾ということで、正直今まで何にも考えていなかったし気に留めていなかった変数・定数を宣言するvar/const/letの違いについて解説します! これで明日からは皆さんもある程度は知ったかができるはず!笑 それでは見ていきましょう。 【GAS入門】変数と定数とは まずはそもそも変数とか定数ってなんだっけ?何それ?って思ってる方向けに、それぞれ簡単に説明しますと、変数や定数はよく「何も入っていない箱のようなもの」と言われますが、ざっくり言うと中学時代に習った「x」とか「π(パイ)」みたいなものだと思って頂ければ大丈夫です。 どういうことかと言うと、円周率を使うたびに毎回「3.141592……」とか書いてると面倒だしミスる可能性高いじゃないですか。それを「π」って書くだけで解消できてしまうと。変数とか定数というのはそのくらいライフハックな解決策なんですね。 ただ、急に「π
変数の宣言は色々な書き方がありますが、その中でもちょっと特殊なのが、あとから値を書き換えたくない変数を作るconstというものです。 constなんて初めて聞いた… どうやって使うんだろう… という疑問をお持ちの方、今回の記事は必見です。 変数の宣言方法のひとつ、constについて解説していきます。 下記の流れで、constについて理解を深めていきましょう。 【基礎】変数とは 【基礎】constとは 【基礎】constの使い方 【発展】他の宣言方法との違い 変数を使いこなすには、constをしっかり理解する必要があります。 この記事でバッチリ学んでいってくださいね! 変数とは? 変数とは、プログラミングで使われる、値を入れておくための箱です。 同じ値を使いまわしたいとき、いちいち書いたりするのは面倒ですよね。 または、途中で値が変わってもちゃんと引き継いだ状態で使いまわしたい時なんかに使わ
C や C++ の const 修飾子は変数や引数に指定することで “値が不変である” ということを示す. 極めて単純である. これは書き方にいくつかのバリエーションが存在するが、ポインタ変数に対して指定する場合には初見だと非常に混乱する記述となる. この記事ではこの const 修飾子を混乱せずに使うための考え方についてまとめる. 変数に対して const 指定する場合 int a = 10; のように宣言された変数を const 指定する場合には、以下のいずれかの書き方がある. const int a = 10; // 変数 a の値は書き換えできなくなる. int const a = 10; // 同上 このいずれかの記述を行った場合、変数 a は値を書き換えることができなくなる. すなわち、a = 20; のような代入を行おうとするとコンパイルエラーが発生するようになる. これらは
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く