フィールドコードを記述する時 . or [] どちらが正しい?

カスタマイズ始めたての頃に気になって調べたことを備忘録として載せておきます!

フィールドコードを記述する時 . or [] どちらが正しい?

皆さん一度は疑問に思ったことあるのではないでしょうか?

  • ブラケット記法
record.['フィールドコード'].value
  • ドット記法
record.フィールドコード.value

どちらで書けばいいんだろう…と
cybozu developer network には使い分けに関しての記事は見当たらなかったので、調べてまとめてみました。

結論:どちらでも良い

基本的にはどちらも動作に違いはありませんが、キーを変数で指定したい場合はブラケット記法でしか動作しません。
次の例では、ドット記法はundefinedになってしまいます。

const object = {
  name: 'John', // nameがキーでJohnがバリュー(まとめてプロパティと呼ぶ)
  age: 30, 
  hobbies: ['reading', 'cooking']
};

const key = 'name'; // アクセスするキーを変数に格納

console.log(object.key); // output: undefined
console.log(object[key]); // output: 'John'

オススメは?

個人的にオススメはドット記法です。

メリットとしては

  • ドット記法の方が楽に書ける
  • ミスも少ない

かな?と思っています。

ただ、cybozu developer network のサンプルコードでは、ブラケット記法で書かれています。
(例:イベントオブジェクトで実行できる操作 - cybozu developer network

こちらのメリットとしては、

  • フィールドコードであると認識しやすい
    (アプリのフィールドコードを変えた時にコードを編集しやすい)
  • キーを変数で指定したい場合でも動作する

が考えられます。

好みによって変わりそうですね!

おわりに

私はドット記法派ですが、皆さんはどちら派ですか?
良ければ、コメントでどちら派か教えてくださると嬉しいです…!
(他にもメリットや使い分け等の補足があれば教えてください!)

5 Likes

私はブラケット派…というより、フィールドコードは必ず変数に入れて管理する派ですね。プログラム上の識別子と kintone 上の識別子を混同させたくないです。

最近だとオブジェクトを定義するときも

const fieldCode = '文字列__1行_';
const record = {
  [fieldCode]: { value: 'てすと', },
};

のようにブラケット記法が使えるので、そこまで不便なタイミングは無いんじゃないかなと思っています。

2 Likes

ドット記法しか使えないケース。

関連レコードに含まれるフィールドの値を指定するサンプルクエリが
関連レコードのフィールドコード.関連レコード先のフィールドコード
と書かれていますが、これを
関連レコードのフィールドコード["関連レコード先のフィールドコード"]
みたいに書くことはできない。


あとブラケット記法の用例が record.['フィールドコード'].value
なってますが、record['フィールドコード'].value ですね。

1 Like

返信いただきありがとうございます1

@wv-sumichan
たしかに後々のことを考えると、ブラケット記法の方が良さそうに思えてきました…!

@Maple
ドット記法しか使えないケースの例、ありがとうございます!
カスタマイズスペシャリストの勉強をしていたときに、出てきた記憶があります…!

あとブラケット記法の用例が record.['フィールドコード'].value
なってますが、record['フィールドコード'].value ですね。

ご指摘ありがとうございます!ドットを削除するのを失念していました…