オブジェクト: obj[key]はobj[key-string]ではないのはなぜですか? #1307
-
URL : https://github.com/asciidwango/js-primer/blob/master/source/basic/object/README.md
最後の1行は |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment
-
const key = "key-string";
// Computed Propertyで`key`の評価結果 "key-string" をプロパティ名に利用
const obj = {
[key]: "value"
};
console.log(obj[key-string]); // => Uncaught ReferenceError: string is not defined 元のサンプルコードはComputed property namesを使って、 そのため、最後の行である console.log(obj[key]); // => "value" は console.log(obj["key-string"]); // => "value" と書いても結果は同じになります。 ブラケット記法([])内に書いた式は評価して、その結果をプロパティ名に利用できるからですね。 次のように書くと、違う結果になります。 console.log(obj[key-string]); これは、JavaScriptの変数名には 分かりやすく書くと、次のように書いた場合と同じです。 console.log(obj[key - string]); このときに |
Beta Was this translation helpful? Give feedback.
key-string
として実行してみるとわかると思いますが、次のようにエラーとなります。元のサンプルコードはComputed property namesを使って、
obj
オブジェクトの"key-string"
プロパティ名に対して"value"
という値を入れて、その
obj
オブジェクトの"key-string"
プロパティの値をコンソールに出力するという例ですね。そのため、最後の行である
は
と書いても結果は同じになります。
ブラケット記法([])内に書いた式は評価して、その結果をプロパティ名に利用できるからですね。
そのため、変数
key
の評価結果である"key-string"
をプロパティ名として指定しています。次のように書くと、違う結果になります。
これは、JavaScriptの変数名には
-
は使えないため、key-string
は 変数k…