15

コードの一部をリントしていて、ドット表記を使用する方がよいというエラーが返されました。角括弧表記を使用していることがわかりました(このすばらしい投稿からわかりやすくなっています)が、Crockfordがドット表記を好む理由を正確に尋ねたいと思いました。私が取り組んでいるプロジェクトは、その実体のためにSBNを使用しており、混乱したり読めなくなったりすることはないと思いますが、ユーザードットに明確な理由がある場合は、修正します。

先に進む前に、それを完全に理解したいだけです!

4

4 に答える 4

15

私がCrockfordを最もよく理解しているので、それは一貫性と予約語の使用を避けることに帰着すると思います。彼のサイトで、彼は次のように述べています。

ドット表記は、添え字が有効な識別子の形式の文字列定数である場合に使用できます。言語定義に誤りがあるため、予約語はドット表記では使用できませんが、添え字表記では使用できます。

予約語は添え字表記で参照できるため、混乱を招く可能性があります。基本的に、オブジェクトのメンバーの名前として予約語を使用することは避けてください。ドット表記はこれを強制します(言語を介して-Crockfordがそれを呼び出すときのエラー)。したがって、予約語の使用を避けるためのより良いコーディング方法と見なされます。

また、同じサイトで、ドット表記の方が「もう少し便利」だとも述べています。

于 2012-11-07T13:53:09.230 に答える
9

21ページの「JavaScript:TheGoodParts」から:

。よりコンパクトで読みやすくなるため、表記が推奨されます。

この本はダグラス・クロックフォード自身によって書かれています。

于 2012-11-07T13:53:29.663 に答える
3

どちらの構文にも問題はなく、どちらもすべての環境で機能します。ただし、可能な場合はドット表記を使用することで、毎回3文字節約できます。

ソース

JSLint標準は意見のみに基づいていることを覚えておくことが重要です。ほとんどは一般的な意見ですが、議論の余地があるものもあります。そうは言っても、私は代わりにJSHintを好みます。これにより、同意しないオプションをオフにすることができます。

于 2012-11-07T13:56:49.237 に答える
2

配列要素をオブジェクトのプロパティと区別し、コードの混乱を少なくすることだと思います。

例:

var x = [];
x.push(stuff);

これx[0]が私たちがそれにアクセスする方法です。

var y = { foo: "bar" };

y['foo']同様に機能しますが、それがオブジェクトyのプロパティであり配列yの要素ではないy.fooことを明確にするために、オブジェクトにドット表記を使用できます。foo

于 2012-11-07T13:51:17.563 に答える